2

Solr 5.4 を使用して、郵便番号を音声学的に索引付けおよび検索しようとしています。NGramFilterFactory と BeiderMorseFilterFactory を組み合わせてみましたが、うまくいかないようです。たとえば、「AB11 9RD」を格納してインデックス化し、「a B 11 nine Rd」として検索したいとします。ここに schema.xml を掲載しています。実装するためのヒントをいただければ幸いです。

<types>
    <fieldType name="string" class="solr.StrField"/>
    <fieldType name="postcode" class="solr.TextField" omitNorms="true">
        <analyzer>
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <tokenizer class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="1"/>
        </analyzer>
    </fieldType>
    <fieldType name="postcode_phonetic" class="solr.TextField" omitNorms="true">
        <analyzer>
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <tokenizer class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="1"/>
            <filter class="solr.UpperCaseFilterFactory"/>
            <filter class="solr.BeiderMorseFilterFactory" nameType="GENERIC" ruleType="APPROX" concat="true" languageSet="auto"/>
        </analyzer>
    </fieldType>

<fields>
    <copyField source="Postcode" dest="PostcodePhonetic"/>
    <field name="Postcode"  type="postcode" indexed="true"  stored="true" multiValued="true"/>
    <field name="PostcodePhonetic"  type="postcode_phonetic" indexed="true" stored="false" multiValued="true"/>
    <field name="PostcodePhonetic2"  type="postcode_phonetic2" indexed="true" stored="false" multiValued="true"/>
4

2 に答える 2

0

これは、音声検索が意味するものではありません。音声検索は単語を「音声」表現に変換します。音声表現は、似たような響きの名前が同じトークンに変換されることを意味します。この場合の例は、「nine」と「nhine」です。

<tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="1" />各数字がそのテキスト形式として同義語を持つ同義語フィルターと一緒に使用します。より大きな maxGramSize を使用すると、「11」を「eleven」に変換することもできます。

于 2016-01-28T13:44:42.027 に答える
0

これが解決策の更新です。誰かがより良い解決策を提案できる場合は、してください

<analyzer type="index">
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\b \b" replacement=""/>
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
    <filter class="solr.ShingleFilterFactory" tokenSeparator="" minShingleSize="2" maxShingleSize="7" outputUnigrams="false"/>
    <filter class="solr.LengthFilterFactory" min="6" max="7"/>
  </analyzer>
</fieldType>
于 2016-01-31T03:03:50.187 に答える