我已经实现了Solr Search,它在一定程度上运行良好。我想实现类似IMDB的搜索。我在Solr中添加了语音算法过滤器。它适用于以下中的一些用例
良好用例
查询:"Silvertor Stallon"结果:"Slyvestor Stallone"
查询:"Angelena Jole"结果:"安吉丽娜·朱莉"
不良用例
查询:Anglina Jolie结果:[]#空数组。正如我上面提到的,我在数据库中有安吉丽娜·朱莉。
有人能告诉我问题出在哪里吗?或者为什么Solr找不到"Anglina"
这是我的Solr配置
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="20" side="front"/>
<filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
</analyzer>
</fieldType>
更多详细信息:
这是一个Rails项目,我使用Sunspot与Solr进行交互。
期待一个伟大的帮助。感谢
您应该真正使用Solr Admin UI的Analyze屏幕。在那里,你可以选择你的字段,放上你的源文本和搜索文本,看看会发生什么以及它们是否匹配。
在您的具体情况下,我怀疑您不能将EdgeNGramFilterFactory和PhoneticFilterFactory结合起来。您将获得文本的随机前缀,然后尝试导出语音信息。此外,EdgeNGramFilterFactory通常只在索引方面,并且您可以看到对索引和查询时间使用相同的定义。