首页 文章

Solr 4.5:Solr facet查询什么时候比简单查询更好?

提问于
浏览
0

我正在使用Apache Solr,并希望获得有关某些查询选项的更多详细信息 . 我发现了各方面的疑问,并且想知道,他们确实带来了重要的优势;特别是在以下示例的情况下:

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

问题是:
a)您是否应该使用当前的书籍ISBN查询Solr并检查总结果,或者
b)您是否应该发送带有 f.isbn.facet.mincount=2 的构面查询并检查结果是否包含当前图书ISBN?

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

1 回答

  • 0

    如果您要进行查询 - 请执行查询 . Lucene针对查询进行了高度优化,因此您应该这样做 . facet查询用于从任意查询创建构面(计数) - 因此在内部它执行相同的操作 . 如果你生成一个facet然后遍历那个facet,那么Lucene必须查看的文档比你查询单个值时要多得多 .

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

相关问题