EdgeNGramFilterFactory 仍然没有给出结果?

发布于 2024-12-13 05:55:02 字数 1095 浏览 0 评论 0 原文

我按照 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 服务器)。

我是否在这里遗漏了某些内容?可能是什么问题?

I followed the Railscast to get Sunspot running and then this tutorial on enabling wildcard searching on my search field but for some reason it still isn't working.

Inside of my solr/conf/schema.xml I replaced the default lines with these instead for the 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>

When I search for "ste" or "steve jobs" I get Steve Jobs, but when I try "stv jbs" or stv jobs" I get no results.

I reindexed and restarted the sunspot server a couple of times ( also the rails server).

Am I missing something here? What could be the issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

似狗非友 2024-12-20 05:55:02

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

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

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

正如您搜索 stv jbsstv 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 -

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

As in your case searching for stv jbs or stv jobs are more of an misspellings rather than partial matches, and would not match the documents.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文