影响Solr拼写检查

时间:2019-02-04 13:56:17

标签: solr lucene spell-checking

对于一个使用Solr进行搜索的电子商务网站,我们使用的是标准拼写检查组件,它在某些情况下可以正常工作,但在某些情况下则不能。这个问题是要了解它在后台如何工作以及如何改进它。

例如: 我有一些产品的名称带有“手链”。当我搜索“ brecelet”,“ bracelat”,“ braselet”或“ brecelat”等拼写错误的术语时,会将其更正为“手镯”,而不是“ breclate”。

为什么它对上学期不起作用,我如何影响它?

更新: 拼写检查配置:

<field name="SpellContent" type="textSpell" indexed="true" stored="false" multiValued="true" required="false" />

我们在上面的字段中复制了“名称”字段。

 <fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

拼写检查为:

<searchComponent name="spellcheck" class="solr.SpellCheckComponent">

    <str name="queryAnalyzerFieldType">text</str>

    <lst name="spellchecker">
      <str name="name">default</str>
      <str name="field">SpellContent</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>
    </lst>

    <lst name="spellchecker">
      <str name="name">wordbreak</str>
      <str name="classname">solr.WordBreakSolrSpellChecker</str>      
      <str name="field">SpellContent</str>
      <str name="combineWords">true</str>
      <str name="breakWords">false</str>
      <int name="maxChanges">10</int>     
    </lst>

  </searchComponent>

0 个答案:

没有答案