Soundex搜索Solr

时间:2014-10-24 09:49:33

标签: ruby-on-rails-4 solr fuzzy-search sunspot-solr

我已经在一定程度上实现了Solr Search及其工作效果。我想实现类似于IMDB的搜索。我在Solr中添加了语音算法过滤器。它适用于一些用例如下

好用例

查询:" Silvertor Stallon" 结果:" Slyvestor Stallone"

查询:" Angelena Jole" 结果:"安吉丽娜朱莉"

不良用例

查询:Anglina Jolie 结果:[]#Empty Array。虽然如上所述我在数据库中有安吉丽娜朱莉。

有人可以指导我是什么问题或为什么索尔没有找到" 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项目,我使用太阳黑子与Solr进行交互。

期待很大的帮助。感谢

1 个答案:

答案 0 :(得分:0)

您应该使用Solr Admin UI的分析屏幕。在那里,您可以选择您的字段,放置源文本和搜索文本,看看会发生什么以及它们是否匹配。

在您的具体情况下,我怀疑您无法组合EdgeNGramFilterFactory和PhoneticFilterFactory。您将获得文本的随机前缀,然后您尝试获取语音信息。此外,EdgeNGramFilterFactory通常仅在索引端,您可以看到对索引和查询时使用相同的定义。