Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-8237

Invalid parsing with solr edismax operators

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Implemented
    • 4.8.1
    • None
    • query parsers
    • 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>

      Attachments

        Activity

          People

            Unassigned Unassigned
            prog.mahmoud Mahmoud Almokadem
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: