4

私のsolr 4.1.0のインストールでは、音声エンコーディングで何も見つかりません。schema.xml からの抜粋:

<field name="textsuggest" type="text_suggest" indexed="true" stored="true" omitNorms="true" multiValued="true" />
<field name="textphon" type="text_phonetic_do" indexed="true" stored="true" omitNorms="true" omitTermFreqAndPositions="false" multiValued="true" />
<copyField source="textsuggest" dest="textphon"/>

...

<fieldType name="text_phonetic_do" class="solr.TextField"
    positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory" />
        <filter class="solr.GermanNormalizationFilterFactory" />
        <filter class="solr.SynonymFilterFactory" synonyms="lang/synonyms_de.txt"
            ignoreCase="true" expand="false" /> 
        <filter class="solr.PhoneticFilterFactory" encoder="ColognePhonetic" inject="false" />
    </analyzer>
</fieldType>

text_suggestは多かれ少なかれ元のテキストを小文字化し、solr.StandardTokenizerFactoryとでトークン化したものsolr.WordDelimiterFilterFactoryです。フォネティック エンコーダーは、ドイツ語の単語に特化したものです。同義語フィルターは、一部のドメイン固有の単語を処理します。http://www.cominvent.com/2012/01/25/super-flexible-autocomplete-with-solr/に触発されました。

「Geprüfter Betriebswirt」のエントリと、textsuggest のその他の項目のインデックスを作成します。「Betriebswirt」を検索すると、期待どおりの結果が得られます。ただし、元のドイツ語の小さなスペルミスである「Betribswirt」を検索すると、solr は 0 件のヒットを報告します。

solr の管理 GUI の分析ビューで、「Betriebswirt」とフィールド タイプの異なるスペルを試してみtext_phonetic_doましたが、それらはすべて同じ数値ストリームにエンコードされます。

  • betriebswirt => 12718372
  • betribswirt => 12718372
  • betribswiirt => 12718372
  • ペトリブスウィート => 12718372

したがって、エンコーディング (分析時間と検索時間) は期待どおりに機能します。しかし、上で述べたように、solr は音異表記を検索してもドキュメントを見つけられません。

クエリ ビューを使用していますが、クエリでさえtextphon:Betriebswirt1 つの結果が返されません。クエリの完全な結果 (タイミングの部分を削除しました) は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<response>

<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">1</int>
  <lst name="params">
    <str name="debugQuery">true</str>
    <str name="indent">true</str>
    <str name="q">textphon:Betriebswirt</str>
    <str name="wt">xml</str>
  </lst>
</lst>
<result name="response" numFound="0" start="0">
</result>
<lst name="debug">
  <str name="rawquerystring">textphon:Betriebswirt</str>
  <str name="querystring">textphon:Betriebswirt</str>
  <str name="parsedquery">textphon:12718372</str>
  <str name="parsedquery_toString">textphon:12718372</str>
  <lst name="explain"/>
  <str name="QParser">LuceneQParser</str>
</lst>
</response>

なぜ何も見つからないのかわかりません。デバッグ出力を正しく理解している場合、インデックスは正しい(読み取り:音声的にエンコードされた)トークンを検索することさえできます。

それで、私は何が欠けていますか?誰かが私を正しい方向に向けることができますか? ありがとう

4

0 に答える 0