Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-344

[PATCH] Introduction of QueryFactory interface for Query construction

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Not A Problem
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: core/queryparser
    • Labels:
      None
    • Environment:

      Operating System: Linux
      Platform: Other

    • Bugzilla Id:
      33449

      Description

      To override the default behaviour of the QueryParser you must currently extend
      it and override the appropriate methods. This seemed to be a little awkward.

      To enable a (hopefully) more flexible means of creating Query instances it
      would seem better to introduce a QueryFactory interface and pass an instance of
      an implementation of this interface to the QueryParser, having the QueryParser
      callback to it to construct the query as it parses it. With this design you
      could write something like:

      QueryParser parser = new QueryParser("defaultField", new StandardAnalyzer(),
      new QueryFactoryImpl());

      Where 'QueryFactoryImpl' is an implementation of the QueryFactory interface.
      If you wanted to add the ability to lower case all of your queries you could
      then write:

      QueryParser parser = new QueryParser("defaultField", new StandardAnalyzer(),
      new LowerCaseQueryFactory(new QueryFactoryImpl()));

      Where 'LowerCaseQueryFactory' is a decorator around another QueryFactory
      instance and it simply lowercases all the terms passed to it before delegating
      the actual query construction. This is a simple example, but more powerful
      functionality could be added not by changing the QueryParser, but by creating a
      new QueryFactory implementation.

      I have a patch for this which will be forthcoming in a moment.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                matt@codemonkeyconsultancy.net Matthew Denner
              • Votes:
                3 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: