首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Solr 5.4按语音搜索邮政编码

使用Solr 5.4按语音搜索邮政编码
EN

Stack Overflow用户
提问于 2016-01-28 13:43:55
回答 2查看 265关注 0票数 2

使用Solr 5.4,我尝试按语音对邮政编码进行索引和搜索。我尝试过将NGramFilterFactory和BeiderMorseFilterFactory结合使用,但似乎不起作用。例如,我想存储和索引"AB11 9RD“,并搜索为"a B11 9 Rd”。我在这里发布了我们的schema.xml。任何实现的技巧都将不胜感激。

代码语言:javascript
复制
<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"/>
EN

回答 2

Stack Overflow用户

发布于 2016-01-28 21:44:42

这不是语音搜索的意思--语音搜索会将单词转换成它们的“语音”表示,而语音表示只是意味着发音相似的名字会转换成相同的标记。在这种情况下,一个例子是“九”和"nhine“。

<tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="1" />与同义词过滤器一起使用,其中每个数字都有一个同义词作为其文本形式。如果你使用更大的maxGramSize,你也可以将"11“转换成”11“。

票数 0
EN

Stack Overflow用户

发布于 2016-01-31 11:03:50

这是一个解决方案的更新。如果有人能提出更好的解决方案,请提出来。

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35053667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档