使用Solr ExtendedDisMax Query Parser进行搜索

时间:2012-06-06 11:02:10

标签: solr lucene edismax dismax

我在使用Solr ExtendedDisMax 查询解析器时遇到问题,查询包含非常规查询中的现场搜索

案例如下。

如果我向SOLR发送带参数

的edismax请求(defType = edismax)
  1. QF = FIELD1 ^ 10
  2. Q = FIELD2:侨
  3. debugQuery = on(用于调试目的)
  4. 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

1 个答案:

答案 0 :(得分:2)

如果您使用的是Solr 3.6,则Solr 3.6引入的eDisMax和Fielding搜索存在当前问题。解决方法是在字段名称前加一个空格。

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

  1. QF = FIELD1 ^ 10
  2. q =(field2:ciao)
  3. 有关详细信息,请参阅eDismax: A fielded query wrapped by parens is not recognized