Solr4 - 多项术语的拼写检查问题

时间:2014-01-13 17:45:10

标签: solr solr4

我在拼写检查方面遇到了麻烦。

如果我发送带有“wrd”的请求,拼写检查会给我一些我想要的建议:“word”。但是如果我发送带有多个术语的请求,例如“wrd black”,则spellcheck会将correctSpelled返回true。 我想要拼写检查建议:“黑字”。

请注意,如果我发送带有“wrd blck”的请求,拼写检查会给出我想要的建议(“黑色字”)。

我不认为这是正常行为,但我找不到问题所在。

这是我的solrconfig.xml:

<config>


  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true">

     <lst name="defaults">
        <str name="spellcheck.dictionary">default</str> 
        <str name="spellcheck">on</str>
        <str name="spellcheck.extendedResults">true</str> 
        <str name="spellcheck.count">10</str>
        <str name="spellcheck.maxResultsForSuggest">5</str> 
        <str name="spellcheck.collate">true</str>
        <str name="spellcheck.collateExtendedResults">true</str> 
        <str name="spellcheck.maxCollationTries">15</str>
        <str name="spellcheck.maxCollations">10</str> 
    </lst>
 <arr name="last-components">
     <str>spellcheck</str>
 </arr>

  </requestHandler>


<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
   <str name="queryAnalyzerFieldType">textSpell</str> 
   <lst name="spellchecker">
       <str name="name">default</str>
       <str name="field">spell</str>
       <str name="spellcheckIndexDir">./spellchecker</str>
       <str name="buildOnOptimize">true</str>
       <str name="buildOnCommit">true</str>
       <float name="thresholdTokenFrequency">.01</float>
   </lst>
</searchComponent>


</config>

并在我的schema.xml中:

 <field name="spell" type="textSpell" indexed="true" stored="false" multiValued="true" />
    <copyField source="attr_*" dest="spell" />
    <fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StandardFilterFactory" />
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
      </analyzer>
    </fieldType>

任何人都有任何想法?

1 个答案:

答案 0 :(得分:0)

当其中一个查询字词拼写正确并且拼写检查配置有maxCollat​​ionTries&gt; 1时,似乎有一个错误,我无法确定它是一个错误,我正在通过代码找出这个。

从处理程序的默认参数

中删除此配置
<str name="spellcheck.maxCollationTries">15</str>

您可以将此作为查询参数用作spellcheck.maxCollat​​ionTries = 15并尝试。