Apache Solr 中的词干提取和模糊搜索是否可以协同工作

Bha*_*a67 5 solr fuzzy stemming porter-stemmer

我正在使用波特过滤器工厂来处理包含 3 到 4 个单词的字段。

例如:“ABC BLOSSOM 公司”

我希望在搜索 ABC BLOSSOMING COMPANY 时也能获取上述文档。

当我查询这个时:

name:ABC AND name:BLOSSOMING AND name:COMPANY
Run Code Online (Sandbox Code Playgroud)

我得到我的结果

这就是解析后的查询的样子

+名称:southern +名称:flower +名称:compani (词干分析器效果很好)

但是当我像这样添加模糊语法和查询时,

name:ABC~1 AND name:BLOSSOMING~1 AND name:COMPANY~1
Run Code Online (Sandbox Code Playgroud)

搜索没有给出任何文档作为结果,解析的查询如下所示

+姓名:abc~1 +姓名:朵朵~1 +姓名:公司~2

这清楚地表明阻止没有发生。请审查并提供反馈。

che*_*ffe 4

TL;DR
词干提取没有发生,因为您使用了 PorterFilter,它不是MultiTermAwareComponent

该怎么办?使用实现MultiTermAwareComponent
接口 的过滤器/标准化器之一。

说明
您和许多其他人一样,被 Solr 和 Lucense Multiterm 的行为所困扰。Solr wiki 上有一篇关于此主题的好文章。尽管这篇文章已经过时,但它仍然适用

对于大多数 Solr 用户来说,令人惊讶的事情之一是通配符查询尚未经过任何分析。实际上,这意味着通配符(以及前缀和范围)查询区分大小写,这与预期不一致。从 SOLR-2438、SOLR-2918 甚至 SOLR-2921 开始,这种行为发生了变化。

你问什么是多重术语?本质上,它是任何可能“指向”多个实际术语的术语。例如,run* 可以扩展为 running、runner、running、runt 等。同样,范围查询实际上也是一个“多项”查询。在 Solr 3.6 之前,这些完全未经处理,应用程序层通常必须应用所需的任何转换,例如小写输入。通过“正常”查询分析链运行这些类型的术语会导致各种有趣的行为,因此需要避免。