2011-11-02 65 views
0

我跟着Railscast让Sunspot运行,然后这个tutorial在我的搜索字段上启用通配符搜索,但由于某些原因,它仍然无法正常工作。EdgeNGramFilterFactory仍然没有结果?

里面我的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”或“史蒂夫·乔布斯”我知道史蒂夫·乔布斯,但是当我尝试“STV JBS”或STV工作”我没有得到任何结果。

我重新编制索引并重新启动太阳黑子服务器几次(也铁轨服务器)。

我失去了一些东西在这里?什么可能是问题吗?

回答

5

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

所以对于steve jobs与分克大小为1以下标记将产生 -

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

作为你的情况搜索stv jbsstv jobs是更大的拼写错误的而不是部分匹配,并且将不匹配文件。

+0

感谢您的澄清。另外,太阳黑子可以像寻找“stve”和“jbs”这样的词来做我正在寻找的东西,他们是像EdgeNGramFilter那样的方法吗? – LearningRoR

+1

nope。除非您使用语音过滤器或同义词,否则这些搜索不会匹配结果。 – Jayendra

+0

哦,好的,谢谢。 – LearningRoR