我的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üfterBetriebswirt”和textuggest中的其他项目索引条目。现在,当我搜索“Betriebswirt”时,我得到了预期的结果。然而,搜索“Betribswirt”只是原始德语单词的一个小错误拼写,solr报道0次点击。
在solr的admin gui的分析视图中,我尝试了不同的拼写“Betriebswirt”和我的字段类型text_phonetic_do
,并且它们都被编码为相同的数字流:
因此编码(分析时间和搜索时间)按预期工作。但如上所述,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>
我不知道为什么它找不到任何东西。如果我正确理解调试输出,索引甚至会被搜索到正确的(读取:语音编码的)令牌。
那我错过了什么?任何人都能指出我正确的方向吗?感谢