EdgeNGramFilterFactory仍然没有给出任何结果?

时间:2011-11-02 16:48:22

标签: ruby-on-rails ruby-on-rails-3 solr sunspot

我按照Railscast运行太阳黑子,然后tutorial启用我的搜索字段上的通配符搜索,但由于某种原因,它仍无效。

在我的solr / conf / schema.xml中,我用EdgeNGramFilterFactory取代了默认行:

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" side="front"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

当我搜索“ste”或“steve jobs”时,我会得到史蒂夫·乔布斯,但是当我尝试“stv jbs”或stv jobs时“我没有结果。

我重新索引并重新启动了太阳黑子服务器几次(也是rails服务器)。

我在这里遗漏了什么吗?可能是什么问题?

1 个答案:

答案 0 :(得分:5)

EdgeNGramFilterFactory基本上为术语创建了n-gram。

因此,对于最小克大小为1的steve jobs,将生成以下标记 -

s, st, ste, stev, steve, steve j, steve jo, steve job, steve jobs

在您的情况下,搜索stv jbsstv jobs更多的是拼写错误而不是部分匹配,并且与文档不匹配。