如何将Solr中的两个查询与ComplexPhraseQueryParser结合起来?

问题描述:

  1. 当我在Solr 4.0中分别搜索以下两个过滤器查询时,它按预期工作。如何将Solr中的两个查询与ComplexPhraseQueryParser结合起来?

    {!complexphrase inOrder=true}employeeName_t:"Mike R*"

    empDate_dt:[2016-10-10T00:00:00Z TO 2016-10-10T23:59:59Z]

  2. 但是当我结合这两个查询(不考虑顺序),我没有得到正确的搜索结果。

    • {!complexphrase inOrder=true}employeeName_t:"Mike R*" AND empDate_dt:[2016-10-10T00:00:00Z TO 2016-10-10T23:59:59Z]

    该查询给了我在Solr的

    “响应” 零个的搜索结果:{ “numFound”:0, “开始”:0, “maxScore” :0, “docs”:[] }

    • empDate_dt:[2016-10-10T00:00:00Z TO 2016-10-10T23:59:59Z] AND {!complexphrase inOrder=true}employeeName_t:"Mike R*"

    而在查询顺序的变化给我解析异常如下

    “错误”:{ “味精”:“org.apache.solr.search.SyntaxError:org.apache。 lucene.queryparser.classic.ParseException:不能 解析'employeeName_t:\“Mike':第1行第21列出现词法错误。遇到:after:\”\\“Mike \”“,code:400 }

    使用ComplexPhraseQueryParser部分搜索solr.Need使用两个查询。任何建议,这将不胜感激。

我建议你使用fq参数。

文档通过查询检索为:“Mike R *”并使用fq参数中指定的日期进行过滤。

例子:

q={!complexphrase inOrder=true}employeeName_t:"Mike R*"&fq=empDate_dt:["2016-10-10T00:00:00Z" TO "2016-10-10T23:59:59Z"] 
+0

两者都用作过滤查询[多个过滤器]。是有可能在FQ使用这两个并使其工作? 在此先感谢。 – Vish

+0

是,SOLR(> 4.5)支持,fq =(field1:value1或field2:value2)。你可以使用'q = mainQuery(*:*)&fq =({!complexphrase inOrder = true} employeeName_t:“Mike R *”AND empDate_dt:[“2016-10-10T00:00:00Z”TO“2016-10- 10T23:59:59Z“])' – vinod

+0

相应地更改主查询q和运算符。 – vinod