EdgeNGramFilterFactory 仍然没有给出结果?
我按照 Railscast 来运行 Sunspot,然后这个 关于在我的搜索字段上启用通配符搜索的教程,但由于某种原因它仍然无法正常工作。
在我的 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”时,我得到 Steve Jobs,但是当我尝试“stv jbs”或 stv jobs 时“我没有得到任何结果。
我重新索引并重新启动了 sunspot 服务器几次(还有 Rails 服务器)。
我是否在这里遗漏了某些内容?可能是什么问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
EdgeNGramFilterFactory 基本上为术语创建 n-gram。
因此,对于最小克大小为 1 的 steve jobs ,将生成以下标记 -
正如您搜索
stv jbs
或stv jobs
的情况一样更多的是拼写错误而不是部分匹配,并且不会匹配文档。EdgeNGramFilterFactory basically creates n-grams for the terms.
So for
steve jobs
with min gram size as 1 the following tokens would be generated -As in your case searching for
stv jbs
orstv jobs
are more of an misspellings rather than partial matches, and would not match the documents.