我正在处理类似于以下内容的solr查询: (键:值*)。
运行此命令时,有两种情况:
关于这可能是什么原因的任何想法吗?
答案 0 :(得分:0)
使用通配符时,most of the analysis chain isn't invoked。因此,如果您的字段被标记化,小写然后以其他方式处理(即通常使用词干过滤器),则分析链不会像您期望的那样发生。
由于您使用较长的单词进行观察,因此它与在索引时应用词干法巧妙地匹配,但在使用通配符时却没有(因为这没有意义-当整个令牌为'当前,阻止文本会产生非常奇怪的结果。
您可以使用非阻塞文本字段that only have MultiTermAware filters(通常,对于大多数配置而言,唯一有用的是LowercaseFilter)。
使用通配符时,通配符可以求值为多个标记/术语(即,multiterm所指)。由于这对于许多过滤器没有意义,因此当存在通配符时(例如词干过滤器),不会调用它们。但是,当您为内容编制索引时,不存在通配符,并且会调用每个过滤器。
发生的事情是,在对内容建立索引时会发生词干,但在搜索时不会发生词干。索引windows
可能会变成window
,但是windows*
会尝试查找任何以实际值windows
开头的术语/令牌-但由于windows
被翻转放入window
中-没有匹配项,即使索引编制时前缀与文本相同。