Solr:使用*时未返回任何结果

时间:2018-07-25 09:46:22

标签: solr

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

运行此命令时,有两种情况:

  • 如果“值”是一个大词,则不返回任何结果。但是当我删除“ *”时,我得到了结果。
  • 如果value是一个小字,则返回结果。

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

1 个答案:

答案 0 :(得分:0)

使用通配符时,most of the analysis chain isn't invoked。因此,如果您的字段被标记化,小写然后以其他方式处理(即通常使用词干过滤器),则分析链不会像您期望的那样发生。

由于您使用较长的单词进行观察,因此它与在索引时应用词干法巧妙地匹配,但在使用通配符时却没有(因为这没有意义-当整个令牌为'当前,阻止文本会产生非常奇怪的结果。

您可以使用非阻塞文本字段that only have MultiTermAware filters(通常,对于大多数配置而言,唯一有用的是LowercaseFilter)。

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

发生的事情是,在对内容建立索引时会发生词干,但在搜索时不会发生词干。索引windows可能会变成window,但是windows*会尝试查找任何以实际值windows开头的术语/令牌-但由于windows被翻转放入window中-没有匹配项,即使索引编制时前缀与文本相同。