使用Solr ExtendedDisMax查询解析器进行现场搜索



我在使用Solr ExtendedDisMax查询解析器时遇到问题,该解析器包含非普通查询中的字段搜索

案例如下。

如果我向 SOLR 发送带有参数的 edismax 请求 (defType=edismax)

  1. qf=field1^10
  2. q=字段2:CIAO
  3. debugQuery=on(用于调试目的)

solr 按我预期解析查询,实际上响应的调试部分告诉我

 [parsedquery_toString] => +field2:ciao

但是,如果我使表达式稍微复杂一点,例如将条件放在括号中: 1. qf=字段1^10 2. q=(字段 2:ciao)我得到

[parsedquery_toString] => +(((field1:field2:^2.0) (field1:ciao^2.0))~2)

其中 Solr 似乎无法识别字段语法。

我在文档中没有发现任何提及此行为的内容,而是他们说

此解析器支持完整的 Lucene QueryParser 语法,包括布尔运算符"AND"、"OR"、"NOT"、"+"和"-"、字段搜索、术语提升、模糊...

这个问题真的很烦我,因为即使使用 edismax 解析器,我也想做强制布尔值和字段查询。

您知道解决此问题的方法吗?

编辑:Solr版本是3.6

如果您使用的是Solr 3.6

,则当前存在Solr 3.6引入的eDisMax和Fielded搜索问题。解决方法是在字段名称前面加上空格。

因此,请将查询更改为以下内容:

  1. qf=field1^10
  2. q=( 字段 2:ciao)

有关更多详细信息,请参阅 eDismax:无法识别由括号包装的字段查询。

相关内容

  • 没有找到相关文章