我们需要控制生产solr索引中的数据,我们需要它与新开发兼容。理想情况下,我们希望在本地机器上模拟索引,使用它进行查询solr并编写单元测试以查询更快的迭代。模拟和单元测试Solr和Lucene索引
RamDirectory is used in another question做类似的事情,但问题是从2年前。这example似乎只是这样做(使用FSDirectory而不是RamDirectory)。这是解决这个问题的正确方法吗?有没有更好的方法来做到这一点?
我们想写出这样的测试:
setup mock index;
query mock index;
assert(stuff that should be true);
teardown mock index;
编辑:其他细节:
我们的想法是,我们将建立一个索引,有添加文档的简单方法,而无需索引和系统的其余部分,除了可能保留在版本控制中的本地数据库。在过去,我们生成了一个索引,当出现不兼容时,我们重新生成索引。
如果我们重新编制索引,我们会添加大量的开销,并且假设索引器包含大量的数据处理逻辑(如将数据添加到可搜索的字段中,嘲笑索引器似乎不是一个好选择从一个数据库)。我们的索引器连接到一个外部数据库,所以我们也需要支持。如上所述,我们可以拥有一个本地测试数据库,几乎没有任何开销。
一旦我们有一个测试分贝,我们需要建立一个索引,然后我们可以去掉second link above。问题在于,我们如何快速构建一个索引以便进行测试,例如1000个文档的大小。
的问题,这是我们接下来需要保持我们的本地数据库架构同步的生产模式。生产模式经常变化,这是一个问题。我们希望有一个足够灵活的测试基础架构来处理这个问题 - 到目前为止,这种方法只是重建数据库,而且每次都很慢并且会让其他人感到厌烦!
你正在使用什么数据库......我的猜测是它的MySQL,它在慢速备份和恢复方面声名狼借。因此,我们切换到Postgresql。 SQLServer也具有快速的备份/恢复功能。 –
甲骨文,它是相当优化 – nflacco
我们今天谈论这一点,有一种可能性似乎只对数据库执行SELECT *并将其加载到散列中,以便在本地从来没有模式问题。列几乎永远不会被删除,并且如果列缺失/未指定(用于创建文档),单元测试应该可以正常工作。 – nflacco