0

在此 Solr 文档页面上,我看到以下评论:

注意:最好在 WordDelimiterFilter 之前使用 ElisionFilter。这将防止非常慢的短语查询。

http://wiki.apache.org/solr/LanguageAnalysis#French

有人可以解释一下为什么它会导致短语查询缓慢吗?实际上,我的 WordDelimiterFilter 配置工作文件,我认为我不需要 ElisionFilter,因为它已经以某种方式包含在 WordDelimiterFilter 配置中。

我只是想知道对性能有什么影响...

4

1 回答 1

1

基于SOLR-1938,如果您在 WordDelimiterFilter 之前有 ElisionFilter ,则l'avion只会生成一个 token avion。但是如果 ElisionFilter 不存在,那么根据您的 WordDelimiterFilter 的设置,它可能会生成超过 1 个标记,例如

l, avion, lavion

由于avion它是由 WordDelimiterFilter 生成的,因此您认为它好像 ElisionFilter 已经包含在其中。

我猜关于慢速短语查询的评论意味着如果l'avion被搜索,那么如果 ElisionFilter 不存在,它将搜索多个标记。

更新:这篇文章指出了这个问题:http ://www.hathitrust.org/blogs/large-scale-search/tuning-search-performance它说What we discovered is that the word “l’art” was being searched as a phrase query “l art”. Phrase queries are much slower than Boolean queries because the search engine has to read the positions index for the words in the phrase into memory and because there is more processing involved.

所以我猜问题是用双引号搜索"l'avion"

于 2013-02-18T03:24:09.040 回答