【问题标题】:Issue with distributed spelling check in Solr CloudSolr Cloud 中的分布式拼写检查问题
【发布时间】:2013-10-14 17:38:37
【问题描述】:

我正在从主从配置迁移到 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。现在,如果我运行查询,


@987654321@
响应没有返回任何建议。但是,如果我明确添加 distrib=false ,我会收到建议

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

这种方式无法达到目的,因为我的查询需要分发,而且我不希望单独的查询仅用于拼写检查。

对此的任何指针将不胜感激。

  • 谢谢

【问题讨论】:

    标签: java solr spell-checking solrcloud spelling


    【解决方案1】:

    我找到了解决方案。作为其他人研究解决方案的参考,您需要执行以下操作。

    要在分布式 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2011-03-01
      • 2011-02-15
      • 1970-01-01
      相关资源
      最近更新 更多