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

refactor in DisMaxQParserPlugin and DismaxQParser to allow extending DismaxQParser

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 1.3
    • 1.4
    • search
    • 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. SOLR-786.patch
          10 kB
          Shalin Shekhar Mangar
        2. dismax-query-parser.patch
          18 kB
          Wojciech Biela

        Activity

          People

            shalin Shalin Shekhar Mangar
            wbiela Wojciech Biela
            Votes:
            2 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: