首页 > 解决方案 > Solr PatternTokenizerFactory 不适用于短语

问题描述

我无法让 PatternTokenizerFactory 一次匹配多个单词。如果我使用诸如“^keyword$”之类的简单表达式并搜索“keyword”,它将起作用

<tokenizer class="solr.PatternTokenizerFactory" pattern="^keyword$" group="0" />

"querystring":"keyword",    
"parsedquery":"(+DisjunctionMaxQuery(((title:keyword)^2.0)))/no_coord",

但是,当我在表达式中包含一个空格时,它就会中断。即我的表达式是“^key.word$”,我搜索“关键字”它不起作用

<tokenizer class="solr.PatternTokenizerFactory" pattern="^key.word$" group="0" />    

"querystring":"key word",
"parsedquery":"(+())/no_coord",

我不知道为什么这不起作用。我正在尝试匹配从一些聪明的正则表达式构建的短语,但无法弄清楚发生了什么。

我已经在多个测试人员中检查了正则表达式并且它有效。任何帮助将不胜感激。

我正在使用 Solr 6.1

标签: searchsolrlucenesolr6

解决方案


如果您使用 edismax,则sow(split on whitespace) 参数默认为 true。这使得 edismax在运行分析之前拆分内容。

sow参数_

Split on whitespace:如果设置为 false,将一次性将空格分隔的术语序列提供给文本分析,从而启用对术语序列进行操作的分析过滤器的正确功能,例如多词同义词和 shingles。默认为 true:为每个单独的空格分隔的术语单独调用文本分析。


推荐阅读