Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Implemented
-
4.8.1
-
None
-
Windows 2008 R2 - Apache TomCat 7
Description
Using edismax as the parser we got the undesirable parsed queries and results. The following is two different cases with strange behavior: Searching with these parameters
"mm":"2",
"df":"TotalField",
"debug":"true",
"indent":"true",
"fl":"Title",
"start":"0",
"q.op":"AND",
"fq":"",
"rows":"10",
"wt":"json"
and the query is
"q":"+(public libraries)",
Retrieve 502 documents with these parsed query
"rawquerystring":"+(public libraries)",
"querystring":"+(public libraries)",
"parsedquery":"(((DisjunctionMaxQuery((Title:public^200.0 | TotalField:public^0.1)) DisjunctionMaxQuery((Title:libraries^200.0 | TotalField:libraries^0.1)))))/no_coord",
"parsedquery_toString":"(((Title:public^200.0 | TotalField:public^0.1) (Title:libraries^200.0 | TotalField:libraries^0.1)))"
and if the query is
"q":" (public libraries) "
then it retrieves 8 documents with these parsed query
"rawquerystring":" (public libraries) ",
"querystring":" (public libraries) ",
"parsedquery":"(+((DisjunctionMaxQuery((Title:public^200.0 | TotalField:public^0.1)) DisjunctionMaxQuery((Title:libraries^200.0 | TotalField:libraries^0.1)))~2))/no_coord",
"parsedquery_toString":"+(((Title:public^200.0 | TotalField:public^0.1) (Title:libraries^200.0 | TotalField:libraries^0.1))~2)"
So the results of adding "+" to get all tokens before the parenthesis retrieve more results than removing it.
Request Handler
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults”>
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="df">TotalField</str>
<str name="q.op">AND</str>
<str name="defType">edismax</str>
<str name="qf">Title^200 TotalField^1</str>
</lst>
</requestHandler>