Solr语音搜索没有找到任何东西

时间:2013-02-01 12:47:11

标签: search solr phonetics

我的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.StandardTokenizerFactorysolr.WordDelimiterFilterFactory进行标记。语音编码器是专门用于德语单词的编码器。同义词过滤器处理一些特定于域的单词。 我受到了http://www.cominvent.com/2012/01/25/super-flexible-autocomplete-with-solr/的启发。

我用“GeprüfterBetriebswirt”和textuggest中的其他项目索引条目。现在,当我搜索“Betriebswirt”时,我得到了预期的结果。然而,搜索“Betribswirt”只是原始德语单词的一个小错误拼写,solr报道0次点击。

在solr的admin gui的分析视图中,我尝试了不同的拼写“Betriebswirt”和我的字段类型text_phonetic_do,并且它们都被编码为相同的数字流:

  • betriebswirt =&gt; 12718372
  • betribswirt =&gt; 12718372
  • betribswiiirt =&gt; 12718372
  • petribswiert =&gt; 12718372

因此编码(分析时间和搜索时间)按预期工作。但如上所述,solr在搜索语音变体时没有找到任何文档。

我使用查询视图,甚至查询textphon:Betriebswirt也不会返回单个结果。完整的查询结果(我剥离了计时部分)如下所示:

<?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>

我不知道为什么它找不到任何东西。如果我正确理解调试输出,索引甚至会被搜索到正确的(读取:语音编码的)令牌。

那我错过了什么?任何人都能指出我正确的方向吗?感谢

0 个答案:

没有答案