solr spellchecker with phonetic filters

时间:2012-12-05 06:03:18

标签: solr

我曾尝试将拼音过滤器用于索引拼写的字段( solr 1.4 )。以下是 schema.xml

中的fieldType配置
<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="false">
        <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.TrimFilterFactory" />
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
        </analyzer>
</fieldType>

然而,当使用拼音过滤器时,我看不出任何差异(拼写检查器索引的大小保持不变,并且校正没有差异)。与spellCheckers一起使用时是否会忽略语音过滤器,或者我的配置是否有任何问题?

solrconfig.xml中

  <requestHandler name="standard" class="solr.SearchHandler" default="true">
    <lst name="defaults">
      <str name="echoParams">explicit</str>
        <str name="spellcheck.collate">true</str>
        <str name="spellcheck">true</str>
        <str name="spellcheck.onlyMorePopular">false</str>
        <str name="spellcheck.extendedResults">true</str>
        <str name="spellcheck.count">5</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">loc_name_texts</str>
      <str name="spellcheckIndexDir">./spellchecker</str>
      <str name="buildOnCommit">true</str>
    </lst>
  </searchComponent>

更新 我最初错误地配置了过滤器,因此一直在使用WhitespaceTokenizer。我现在已经纠正过了。但是,当使用语音过滤器时,solr会返回转换后的数据(metaphones)。是否有将内容存储为该字段的一部分?

2 个答案:

答案 0 :(得分:1)

solr中的语音过滤器用于返回更正的建议。它们用于匹配文档,即使查询拼写错误。

拼写检查组件用于返回已更正的建议,但仅适用于包含整个单词但不包含语音字段的字段。

答案 1 :(得分:0)

尝试将'spellcheck'元素更改为此

    <bool name="spellcheck">true</bool>