我在使用Solr ExtendedDisMax 查询解析器时遇到问题,查询包含非常规查询中的现场搜索。
案例如下。
如果我向SOLR发送带参数
的edismax请求(defType = edismax)solr按照我的预期解析查询,实际上响应的调试部分告诉我
[parsedquery_toString] => +field2:ciao
但是如果我使表达式稍微复杂一点,比如把条件放到括号中: 1. qf = field1 ^ 10 2. q =(field2:ciao) 我得到了
[parsedquery_toString] => +(((field1:field2:^2.0) (field1:ciao^2.0))~2)
其中Solr似乎无法识别字段语法。
我在documentation中没有找到任何关于此行为的提及,相反,他们说
此解析器支持完整的Lucene QueryParser语法,包括布尔运算符'AND','OR','NOT','+'和' - ', fielding search ,term boosting,fuzzy ...
这个问题真让我讨厌,因为我想使用edismax解析器进行compelx布尔和现场查询。
你知道解决这个问题的方法吗?
编辑:Solr版本为3.6
答案 0 :(得分:2)
如果您使用的是Solr 3.6,则Solr 3.6引入的eDisMax和Fielding搜索存在当前问题。解决方法是在字段名称前加一个空格。
因此,请将您的查询更改为以下内容:
有关详细信息,请参阅eDismax: A fielded query wrapped by parens is not recognized。