我正在使用波特过滤器工厂的一个领域,其中有3至4个字在它。
例如:“ABC开花公司”
我希望获取上述文件时,我搜索ABC花卉公司以及。
当我查询这个:
name:ABC AND name:BLOSSOMING AND name:COMPANY
我得到我的结果
这是解析后的查询的外观
+名称:南方+名称:开花+名称:compani(发胶做工精细)
但是当我添加模糊语法和这样的查询时,
name:ABC~1 AND name:BLOSSOMING~1 AND name:COMPANY~1
搜索没有给予任何文档作为结果,解析后的查询如下所示
+名称:abc~1 +名称:朵朵~1 +名称:公司~2
这清楚地表明词干没有发生。请检查并给予反馈。
2条答案
按热度按时间7rtdyuoh1#
TL;DR
由于您使用的是PorterFilter(不是MultiTermAwareComponent),因此未进行词干提取。
要做什么?
使用实现MultiTermAwareComponent接口的过滤器/规范化器之一。
说明
你和其他人一样,也被Solr和Lucense的Multiterm行为所吸引。在Solr的wiki上有a good article about this topic。尽管这篇文章已经过时,但它仍然是正确的
对于大多数Solr用户来说,其中一个令人惊讶的地方是通配符查询没有经过任何分析。实际上,这意味着通配符(以及前缀和范围)查询是区分大小写的,这与预期不符。在SOLR-2438、SOLR-2918,或许还有SOLR-2921中,这种行为被改变了。
你问什么是多项查询?本质上它是任何可能“指向”多个真实的项的项。例如,run* 可以扩展为runs、runner、running、runt等。同样,范围查询也是一个真正的“多项”查询。在Solr 3.6之前,这些查询是完全未处理的,应用程序层通常必须应用所需的任何转换。例如输入的小写,通过“正常”的查询分析链运行这些类型的术语会导致各种有趣的行为,因此要避免。
xuo3flqw2#
在我进行试验时,以下配置在一定程度上帮助了我:
(yes,我修改了现有的“text_general”字段(我说我正在做实验)
将其与模糊编辑距离2一起使用,对于术语“忽略”产生以下结果:
因为第一个结果是合适的。
然而,如果我在启用模糊搜索的情况下搜索“rescovering”,它将一无所获。如果禁用模糊搜索,结果将是:
因此,模糊+词干的结果是相当不一致的。Elasticsearch,它是基于Lucene的,就像SOLR一样,不推荐使用模糊+词干:
这也意味着,如果使用雪球分析器,模糊搜索'running',将得到'run'的词干,但不会匹配拼写错误的单词'runninga',它的词干为'runninga',因为'run'与'runninga'之间的距离超过2个编辑。这可能会造成相当多的混乱,因此,通常只对用于模糊查询的文本使用简单的分析器是有意义的,也可能禁用同义词。
来源:https://www.elastic.co/blog/found-fuzzy-search