Solr和太阳黑子的模糊搜索

时间:2013-04-30 13:38:16

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

我为我的Rails 3.0应用程序安装了Solr和Sunspot gem。

我的目标是进行模糊搜索。 例如,我希望将搜索词“Chatuea Marguxa”命名为“ChâteauMargaux”。

实际上,只找到相同的确切单词,因此模糊不起作用。

我的模特:

  searchable do
    text :winery
  end 

我的控制器:

   search = Wine.search do
     fulltext 'Chatuea Marguxa'
   end 

我试过的solr模式,有ngrams:

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
  </analyzer>

我也尝试过双变音电话:

<analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.PorterStemFilterFactory"/>
        <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
      </analyzer>

在这两种情况下,我得到了0回复。 (当然重新索引之后)。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试在查询中的所有单词后面添加字符'~'。像这样:Chatuea~ Marguxa~。这是在lucene中实现的模糊运算符:http://lucene.apache.org/core/3_6_0/queryparsersyntax.html#Fuzzy%20Searches

答案 1 :(得分:0)

一些搜索周围发现了fuzzily宝石:

  

有趣的基准:针对我们整个Geonames派生的表格   在我的开发机器上的位置(3.2M记录,大约1GB的数据)   (2011年MacBook Pro)

     

搜索前10个匹配记录需要6ms±1准备   所有记录的索引大约需要10分钟的数据库查询开销   改变记录是在3ms±2的内存开销(脚印的   trigrams表索引)约为300MB