Solr 4.5:什么时候Solr方面查询比简单查询更好



我正在使用Apache Solr,希望获得有关一些查询选项的更详细信息。我发现了facet查询,并想知道它们究竟什么时候会带来本质优势;尤其是在以下示例的情况下:

Solr服务器上保存了一批书籍。尽管一本书应该具有共同的属性,但它们有一个ISBN。有关书籍的数据由第三方提供,因此检查系统中是否存在双重ISBN非常重要。为了检查一本书的ISBN是否重复,它必须经过一条路由路径,不幸的是,每本书都是单独处理的,没有任何关于前一个或后一个过程的信息。

问题是:
a) 您应该简单地用当前图书的ISBN查询Solr并检查总结果,还是
b) 您是否应该发送一个带有f.isbn.facet.mincount=2的facet查询,并检查结果是否包含当前图书的ISBN?

在这两种情况下,都不可能缓存结果。因此,查询的数量总是等于处理的图书数量。我只是不知道Solr是如何在内部工作的,因此在没有进一步信息的情况下无法做出这个决定,特别是因为查询数量不会因上述任何一种可能性而减少。

如果要执行查询,请执行查询。Lucene针对查询进行了高度优化,所以这就是你应该做的。facet查询用于从任意查询中创建facet(计数),所以在内部它也做同样的事情。如果您生成一个方面,然后迭代该方面,Lucene必须查看比只查询一个值多得多的文档。

提高性能的最佳策略是在批处理中执行这些操作——检查同一批(即isbn:(123 OR 321 OR 567 OR 765))中的500本书,然后在代码中处理这些操作。如果这些更新可以从多个系统并行到达,而不需要经过一个源,那么您必须决定在流中出现任何重复之前可以花费多少时间(这种竞争条件也可能只发生在一本书上,因为两个流可以查询单个isbn,并在将其与两个流分开添加之前得到否定结果)。

最新更新