我必须在我的搜索应用程序中进行一些更改,现有代码提供了一种显示结果的方法,这些结果在发音中与输入搜索的单词类似,例如。用户输入'Julie',搜索结果也会输入'July'。我应该在schema.xml中为此做些什么改变?基本上我想知道锄头在这些地方关闭堵塞。
P.S.我是一个新的bie,所以请原谅我的小疑问,我已经尝试了谷歌搜索。 Thanks¬答案 0 :(得分:0)
您需要使用solr.PhoneticFilterFactory,并且可以使用一些编码器。我推荐DoubleMetaphone。
您可以查看here了解详情。
您需要为新类型的语音匹配定义新字段。 那么,第1步,定义一个新类型
<fieldType name="phonetic" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="false"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
步骤2.在新字段中使用此类型:
<field name="phoneticname" type="phonetic" multiValued="true" />
步骤3.添加复制字段以将原始名称字段复制到phoneticname字段
<copyField source="Name" dest="phoneticname"/>
然后在您的搜索查询中,我建议您在原始名称上使用更高的提升值搜索字段,名称和语音名称,这样您就可以在名称上获得完全匹配的弹出搜索结果,并在语音上匹配名称分数较低。