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
这清楚地表明阻止没有发生。请审查并提供反馈。
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 之前,这些完全未经处理,应用程序层通常必须应用所需的任何转换,例如小写输入。通过“正常”查询分析链运行这些类型的术语会导致各种有趣的行为,因此需要避免。