我们需要控制生产 solr 索引中的数据,并且需要它与新开发兼容。理想情况下,我们想在本地机器上模拟索引,用它查询 solr 并编写单元测试来查询它以获得更快的迭代。
RamDirectory 在另一个问题中用于做类似的事情,但问题是从 2 年前开始的。这个例子似乎就是这样做的(使用 FSDirectory 而不是 RamDirectory)。这些是解决这个问题的正确方法吗?有没有更好的方法来做到这一点?
我们想编写如下测试:
setup mock index;
query mock index;
assert(stuff that should be true);
teardown mock index;
编辑:附加细节:
我们的想法是我们会建立一个索引,有一种简单的方法来添加文档,而不需要索引器和系统的其余部分,除了我们可以保留在版本控制中的本地数据库。过去我们生成一个索引,当出现不兼容时,我们重新生成它。
如果我们重新索引,我们会增加很多开销,并且模拟索引器似乎不是一个好的选择,因为我们的索引器包含大量数据处理逻辑(比如将数据添加到数据库中的可搜索字段) . 我们的索引器连接到外部数据库,因此我们也需要支持它。我们可以有一个如上所述的本地测试数据库,它几乎没有开销。
一旦我们有一个测试数据库,我们需要建立一个索引,然后我们可以离开上面的第二个链接。问题变成了我们如何真正快速地构建索引以进行测试,比如 1000 个文档。
这样做的问题是,我们需要让我们的本地数据库模式与生产模式保持同步。生产模式经常变化,这是一个问题。我们希望有一个足够灵活的测试基础设施来处理这个问题——目前的方法是每次都重建数据库,这很慢而且会惹恼其他人!