0

スペルをインデックス化するフィールドに音声フィルターを使用しようとしました ( 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>

ただし、音声フィルターを使用しても違いは見られません (スペルチェッカーのインデックスのサイズは同じままで、修正に違いはありません)。スペルチェッカーと一緒に使用すると音声フィルタは無視されますか、それとも設定に問題がありますか?

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)を返します。フィールドの一部として保存されたコンテンツを取得する方法はありますか?

4

2 に答える 2

1

solr の音声フィルターは、修正された提案を返すために使用されません。クエリのスペルが間違っていても、ドキュメントを照合するために使用されます。

スペルチェック コンポーネントは、修正された候補を返すために使用されますが、音声フィールドではなく、単語全体を含むフィールドでのみ機能します。

于 2012-12-14T11:05:04.880 に答える
0

「スペルチェック」要素をこれに変更してみてください

    <bool name="spellcheck">true</bool>
于 2012-12-05T08:40:28.920 に答える