Soundex Search with Solr



我已经实现了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通常只在索引方面,并且您可以看到对索引和查询时间使用相同的定义。

最新更新