【问题标题】:Getting facet count 0 in solr在 solr 中获取构面计数 0
【发布时间】:2012-04-09 06:44:41
【问题描述】:

我在我的应用程序中使用带有分面的 solr 搜索。我的用例是datadir中的索引文件不断变化。

问题是,当我基于特定领域进行分面时。我从以前在数据目录中的索引中获取值(并且当前不存在)。但是它们的返回值为 0。我不明白以前索引中的值在哪里保留并在全新的搜索期间返回?

虽然我可以简单地跳过计数为 0 的方面,但我知道这会严重影响我的可扩展性。任何不包括以前搜索者的方面的指针?

[Edit 1]:我当前使用的解决方法是在我的 URL 中添加 facet.mincount=1。但是,我想这会影响我的表现。

【问题讨论】:

  • 您确定您的更改已提交吗?这可能就是您显示先前搜索者的结果的原因。无论如何,使用facet.mincount=n 不是一种解决方法,它是排除小于 n 的构面计数的正确方法。
  • ^ 确实。当您发送 时,所有搜索器都会重新启动。分面有点消耗性能,但使用 mincount 根本不会影响性能..
  • +1 for facet.mincount=1,对我有帮助。
  • 既然可以确定,为什么还要“猜测”性能?问另一个 SO 问题 ;)

标签: solr faceted-search


【解决方案1】:

我找不到评论选项,而且我没有足够的声望来投票! 我有同样的问题。 我们在 solr 4.2 中使用原子更新。

我在这里找到了一些解释:http://collab.sakaiproject.org/pipermail/oae-dev/2011-November/000693.html

摘录:

为了有效地处理多值字段(如标签)的构面,Solr 建立一个“未倒排索引”(你认为它只是被称为 “索引”,但我想这更令人困惑),它映射 内部文档 ID 到它们包含的术语列表。计算 这个数据结构的方面只需要遍历每个 结果集中的文档,查找它包含在 未倒排索引,并将它们添加到所有文档的计数中。

但是,这里有一个偷偷摸摸的优化导致零 我们看到的计数。对于出现在 5% 以上的术语 文档,Solr 不会将它们包含在未倒排索引中(离开 我猜它们有助于降低内存大小),而不是 使用常规查询获取这些术语的计数 Lucene 索引。由于这组“常用”术语并非特定于您的 结果集,因为任何给定的结果集不一定包含 所有这些术语,您都可以得到零计数。

它可能不是来自旧的索引值,而只是存在于超过 5% 的文档中的术语?

【讨论】:

    【解决方案2】:

    我认为facet.mincount=n 不是一种解决方法,您应该使用它来仅获取非负分面计数。

    solrQuery.setQuery("*:*");
    solrQuery.addFacetField("foobar");
    solrQuery.setFacetMinCount(1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-17
      • 2015-10-27
      • 1970-01-01
      • 2012-11-30
      • 2012-10-06
      • 2012-02-07
      • 2010-09-07
      • 1970-01-01
      相关资源
      最近更新 更多