在此Solr文档页面上,我看到以下注释:
注意:之前最好使用ElisionFilter WordDelimiterFilter。这将阻止非常慢的短语查询。
http://wiki.apache.org/solr/LanguageAnalysis#French
有人可以解释一下为什么它会导致慢词短语查询吗? 实际上我的WordDelimiterFilter配置工作文件,我认为我不需要ElisionFilter,因为它已经包含在WordDelimiterFilter配置中。
我只是想知道对表演的影响是什么......
答案 0 :(得分:1)
基于SOLR-1938,如果您在WordDelimiterFilter之前有ElisionFilter,那么l'avion
将只生成一个令牌avion
。但是如果没有ElisionFilter,那么根据你的WordDelimiterFilter的设置,它可以生成多个令牌,如
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"