首页 > 解决方案 > Solr:使用 * 时没有返回结果

问题描述

我正在处理类似于以下内容的 solr 查询:(key:value*)。

运行时,有两种情况:

关于这可能是什么原因的任何想法?

标签: solr

解决方案


使用通配符时,不会调用大部分分析链。因此,如果您有一个被标记化、小写然后以另一种方式处理的字段(即通常使用词干过滤器),分析链不会像您期望的那样发生。

由于您使用更长的单词来观察这一点,因此它与索引时应用的​​词干完美匹配,但当您使用通配符时则不匹配(因为这没有意义 - 当整个令牌不存在时,阻止文本会产生非常奇怪的结果)。

您可以使用仅具有 MultiTermAware 过滤器的非词干文本字段(对于大多数配置,通常唯一有用的是 LowercaseFilter)。

Wut 当您使用通配符时,通配符可以评估为多个标记/术语(即 multiterm 所指的内容)。由于这对许多过滤器没有意义,因此在存在通配符时不会调用它们 - 例如词干过滤器。但是,当您为内容编制索引时,不存在通配符,并且会调用每个过滤器。

发生的情况是,在您为内容编制索引时会发生词干提取,而不是在您搜索时发生。索引windows可能会变成window,但会windows*尝试查找以实际值开头的任何术语/标记windows- 但自从windows变成window- 即使前缀与索引时的文本相同,也没有匹配项。


推荐阅读