簡體   English   中英

Solr - 使用最小匹配= 100%配置SeachHandler的SeachComponent並仍然忽略搜索查詢中的停用詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM