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

refactor in DisMaxQParserPlugin and DismaxQParser to allow extending DismaxQParser

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments


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


      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)
      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


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



            • Assignee:
              shalin Shalin Shekhar Mangar
              wbiela Wojciech Biela


              • Created:

                Issue deployment