![](/img/trans.png)
[英]Solr stop words not seem to work , stop words are removed while indexing but still it at query time the stopwords are not removed in proximity search
[英]Solr – Configure SeachHandler's SeachComponent with minimum match = 100% and still ignore stop words from search query
我們的索引分析器配置了solr.StopFilterFactory。 因此,停用詞不會被編入索引。
我們還使用solr.StopFilterFactory配置了查詢分析器,因為我們希望從搜索查詢字詞中忽略停用詞
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
enablePositionIncrements="true"
/>
... ...
在solrconfig.xml中,選擇SearchHandler配置為使用SearchComponent參數最小匹配= 100%
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="mm">100%</str>
<str name="q.alt">*:*</str>
... ...
這導致我們的一些多字搜索查詢沒有返回結果,例如“雨中的儀式”。 由於“in”和“the”之上的設置未編入索引,但最小匹配使得它們必須是強制性的,即使查詢分析器配置為刪除停用詞。
是否有任何設置可以讓我們實現這一目標?
在這種情況下,您必須考慮查詢中涉及的不同fieldTypes
,區分這兩個類別:使用相同停止過濾器定義的solr.TextField
類型以及其他字段。 涉及的不同類型取決於通過qf
參數請求的查詢字段。
如果查詢包含停用詞並且在qf
中混合了兩類字段,則會出現問題,因為始終會有一個必需的子句嘗試匹配“不停止過濾”字段(例如數字字段或文本字段)上的停用詞沒有停止過濾器),除非你設置較低的mm
。
用於edismax解析器的mm.autoRelax
param旨在處理這種錯誤的行為,並且自Solr 6.0( SOLR-3085 )起可用:
如果為true,則如果從某些但不是所有qf字段中刪除(通過例如停用詞過濾器)子句,則所需子句的數量(最小應匹配)將自動放寬。 如果您遇到qf字段之間不均勻的停用詞刪除導致查詢返回零點擊,請使用此參數作為解決方法。
如果您不能使用mm.autoRelax
並且只要您需要mm=100%
,則必須將qf
設置為僅使用相同停止過濾器的文本字段(相同的參數和字典)以確保查詢時的一致行為包含停用詞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.