我按照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服务器)。
我在这里遗漏了什么吗?可能是什么问题?
答案 0 :(得分:5)
EdgeNGramFilterFactory基本上为术语创建了n-gram。
因此,对于最小克大小为1的steve jobs
,将生成以下标记 -
s, st, ste, stev, steve, steve j, steve jo, steve job, steve jobs
在您的情况下,搜索stv jbs
或stv jobs
更多的是拼写错误而不是部分匹配,并且与文档不匹配。