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

使用Solr ExtendedDisMax查询解析器进行现场搜索,solr,lucene,edismax,dismax,Solr,Lucene,Edismax,Dismax,我在使用SolrExtendedDisMax查询解析器时遇到问题,查询包含字段化搜索内部非普通查询 情况如下 如果我向SOLR发送一个带有参数的eDiscoveryMax请求(defType=eDiscoveryMax) qf=字段1^10 q=字段2:再见 debugQuery=on(用于调试目的) solr按照我的预期解析查询,事实上,响应的调试部分告诉我 [parsedquery_toString] => +field2:ciao 但是如果我把表达式稍微复杂一点,比如把条件放在括

我在使用SolrExtendedDisMax查询解析器时遇到问题,查询包含字段化搜索内部非普通查询

情况如下

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

  • qf=字段1^10
  • q=字段2:再见
  • debugQuery=on(用于调试目的)
  • solr按照我的预期解析查询,事实上,响应的调试部分告诉我

     [parsedquery_toString] => +field2:ciao
    
    但是如果我把表达式稍微复杂一点,比如把条件放在括号里: 1.qf=字段1^10 2.q=(字段2:ciao) 我明白了

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

    我没有发现有人提到过这种行为,相反,他们说

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

    这个问题真的让我很恼火,因为即使使用edismax解析器,我也希望执行compelx布尔查询和字段查询

    你知道解决这个问题的方法吗


    编辑:Solr版本为3.6

    如果您使用的是Solr 3.6,则Solr 3.6引入的eDiscovery和Fielded Searchs存在当前问题。解决方法是在字段名前面加一个空格

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

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

  • 有关更多详细信息,请参阅。

    在solr用户邮件列表中也会询问:
    [parsedquery_toString] => +(((field1:field2:^2.0) (field1:ciao^2.0))~2)