簡體   English   中英

Solr Cloud中的分布式拼寫檢查問題

[英]Issue with distributed spelling check in Solr Cloud

我正在從主從配置遷移到Solr Cloud。 我要遷移到的Solr版本是4.4。 我有2個碎片,每個碎片1個副本。 我面臨一個有關拼寫建議的問題。 我已經打開了請求處理程序中的拼寫組件。 想法是帶回建議(如果有)作為查詢響應的一部分。


<str name="spellcheck">on</str> 
   <str name="spellcheck.collate">true</str> 
   <str name="spellcheck.onlyMorePopular">false</str> 
   <str name="spellcheck.extendedResults">false</str> 
   <str name="spellcheck.count">1</str> 
   <str name="spellcheck.dictionary">default</str> 
  </lst> 
  <!-- append spellchecking to our list of components --> 
  <arr name="last-components"> 
   <str>spellcheck</str> 
  </arr>

拼寫檢查搜索組件也是非常標准的。


<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
    <str name="queryAnalyzerFieldType">spell</str>
    <!-- a spellchecker built from a field of the main index -->
    <lst name="spellchecker">
        <str name="name">default</str>
        <str name="field">text</str>
        <str name="classname">solr.DirectSolrSpellChecker</str>
        <str name="distanceMeasure">internal</str>
        <float name="accuracy">0.5</float>
        <int name="maxEdits">2</int>
        <int name="minPrefix">1</int>
        <int name="maxInspections">5</int>
        <int name="minQueryLength">4</int>
        <float name="maxQueryFrequency">0.01</float>
        <!-- uncomment this to require suggestions to occur in 1% of the documents
               <float name="thresholdTokenFrequency">.01</float>
      -->
    </lst>

    <!-- a spellchecker that can break or combine words.  See "/spell" handler below for usage -->
    <lst name="spellchecker">
        <str name="name">wordbreak</str>
        <str name="classname">solr.WordBreakSolrSpellChecker</str>     
        <str name="field">text</str>
        <str name="combineWords">true</str>
        <str name="breakWords">true</str>
        <int name="maxChanges">10</int>
    </lst>
</searchComponent>

我在兩個分片中都運行了spellcheck.build = true 現在,如果我運行查詢,


http://testhost.com:8983/solr/browse?q=dellll
回應沒有返回任何建議。 但是,如果我顯式添加distrib = false ,則可以得到建議

 http://testhost.com:8983/solr/browse?q=dellll&distrib=false 

這種失敗的目的是因為我的查詢需要分發,並且我不想為拼寫檢查而單獨查詢。

任何對此的指針將不勝感激。

  • 謝謝

我已經找到了解決方案。您需要做的是作為其他參考解決方案的參考。

為了使拼寫建議在分布式Solr環境中起作用,您需要在查詢中添加shards.qt 應該將其設置為您正在使用的請求處理程序的名稱。 例如,如果您正在使用/ select請求處理程序,則需要使用/ spell請求處理程序。 查詢如下所示:


http://testhost.com:8983/solr/select?q=dellll&shards.qt=/spell

對於自定義請求處理程序,qt應該與請求處理程序相同。


http://testhost.com:8983/solr/customhandler?q=dellll&shards.qt=/customhandler

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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