在solr中获得构面计数0

Gre*_*orn 5 solr faceted-search

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

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

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

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

use*_*507 3

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

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

摘抄:

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

然而,这里有一个偷偷摸摸的优化,导致我们看到零计数。对于出现在超过 5% 的文档中的术语,Solr 不会将它们包含在非倒排索引中(我猜,将它们排除在外有助于减少内存大小),而是使用常规方法获取这些术语的计数针对 Lucene 索引的查询。由于“常用”术语集并非特定于您的结果集,并且由于任何给定结果集不一定包含所有这些术语,因此您可以获得零计数。

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