2

我正在尝试确定 Lucene.net 过滤器是限制搜索空间还是仅根据过滤器返回的文档从搜索匹配中排除文档。也就是说,如果过滤器允许文档 A、B 和 C 而不是 D 和 E,并且用户的查询匹配 B、C 和 D,那么过滤器是否会阻止 D 被视为查询匹配,或者查询会阻止匹配项包括 B、C 和 D,然后在查询运行后仅将 D 排除在过滤器之外?我在这方面的任何地方都找不到确凿的信息。我最接近的是一年半前的这篇文章:http: //java.dzone.com/news/fast-lucene-search-filters建议在返回查询匹配后应用过滤器。请记住,我使用的是当前版本的 Lucene.net,而不是 Lucene for Java。

4

1 回答 1

1

当前的Lucene.Net 中,过滤器在查询执行后应用。因此,过滤器排除的文档仍将根据查询条件进行评分,然后从结果集中删除。

这在 4.x 中发生了变化,有关更多信息,请参阅Lucene-1536

现在你可能会问,使用过滤器值得吗?答案是肯定的,如果您缓存过滤器以供重复使用。

于 2012-12-28T04:36:59.797 回答