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

refactor in DisMaxQParserPlugin and DismaxQParser to allow extending DismaxQParser

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 1.3
    • Fix Version/s: 1.4
    • Component/s: search
    • Labels:
      None

      Description

      I needed to change some of the default behaviour of the DismaxQParser, so as opposed to infecting the solr codebase with our custom behaviour, I wanted to be able to subclass the DismaxQParser and change only what we wanted to change.

      Here I submit a patch that allows for such subclassing. The change that is done to the code base in the following steps:

      1. refactor in the DismaxQParser.parse() method to
      addMainQuery(query, solrParams);
      addBoostQuery(query, solrParams);
      addBoostFunctions(query, solrParams);

      2. refactor the addMainQuery() method to use
      getUserQuery(userQuery, up, solrParams)
      getAlternateUserQuery(solrParams)
      getPhraseQuery(userQuery, pp)

      3. move the DismaxQParser to the top-level to make it public (and allow subclassing)

      After applying this change I can to as follows:
      1. write my own QParserPlugin to return a subclass of the DismaxQParser
      2. in this subclass I override the the methods I need, in my case the getUserQuery() method.
      3. add this plugin to the solrconfig.xml and use it

      the patch is done against the Solr svn trunk

        Attachments

        1. dismax-query-parser.patch
          18 kB
          Wojciech Biela
        2. SOLR-786.patch
          10 kB
          Shalin Shekhar Mangar

          Activity

            People

            • Assignee:
              shalinmangar Shalin Shekhar Mangar
              Reporter:
              wbiela Wojciech Biela
            • Votes:
              2 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: