[ 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]