[ http://issues.apache.org/jira/browse/LUCENE-158?page=all ]
     
Daniel Naber resolved LUCENE-158:
---------------------------------

    Fix Version: 1.9
     Resolution: Fixed
      Assign To:     (was: Lucene Developers)

This isn't an issue anymore in Lucene 1.9.


> [PATCH] MultiFieldQueryParser, can't change default search operator
> -------------------------------------------------------------------
>
>          Key: LUCENE-158
>          URL: http://issues.apache.org/jira/browse/LUCENE-158
>      Project: Lucene - Java
>         Type: Bug
>   Components: QueryParser
>     Versions: 1.0.2
>  Environment: Operating System: Linux
> Platform: Other
>     Reporter: Christoph Goller
>      Fix For: 1.9
>  Attachments: multiFieldPatch.txt
>
> Bug detected by Bernhard, submitted via Christoph
> bug occured with 1.3 rc2
> just played around with the MultiFieldQueryParser and didn't find a working 
> way
> to change the "operator" value.
> The problem is that MultiFieldQueryParser is implementing two public static
> methods "parse" only. Calling one of those, in the extended superclass, the
> static method implementation for "parse" is called. Due to the fact that the
> QueryParser class creates a new Instance for each call thru the static method,
> the "operator" flag is simply ignored.
> There would be a simple fix within MultiFieldQueryParser class without 
> touching
> the rest of the system. One have to add a new non static method "parse" which
> could look like this:
> /***********************************************************/
> public Query parse(String query, String[] fields) throws ParseException {
>        BooleanQuery bQuery = new BooleanQuery();
>        for (int i = 0; i < fields.length; i++)
>        {
>            QueryParser parser = new QueryParser(fields[i], analyzer);
>            parser.setOperator(getOperator());
>            Query q = parser.parse(query);
>            bQuery.add(q, false, false);
>        }
>        return bQuery;
>      }
> /***********************************************************/
> To test the new implementation, following code fragment can be used:
> /***********************************************************/
>            Directory directory = FSDirectory.getDirectory("/tmp/idx-test", 
> false);
>            Analyzer analyzer = new SimpleAnalyzer();
>            Searcher searcher = new IndexSearcher(directory);
>            Hits hits = null;
>                      String[] fields = { "contents", "title" };
>            MultiFieldQueryParser parser = new MultiFieldQueryParser("britney
> spears", analyzer);
>                      parser.setOperator(QueryParser.DEFAULT_OPERATOR_AND);
>                              Query query = parser.parse("britney spears", 
> fields);
>                      System.out.println("Query: " + query.toString());
>                      hits = searcher.search(query);
>            System.out.println ("Results: " + hits.length());
>                      searcher.close();
> /***********************************************************/
> best regards
> Bernhard

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to