[ https://issues.apache.org/jira/browse/LUCENE-1245?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12582490#action_12582490 ]
trejkaz edited comment on LUCENE-1245 at 3/26/08 5:13 PM: ---------------------------------------------------------- Here's an example illustrating the way we were using it, although instead of changing the query text we're actually returning a different query class -- that class isn't in Lucene Core and also it's easier to build up an expected query if it's just a TermQuery. {noformat} public void testOverrideGetFieldQuery() throws Exception { String[] fields = { "a", "b" }; QueryParser parser = new MultiFieldQueryParser(fields, new StandardAnalyzer()) { protected Query getFieldQuery(String field, String queryText, int slop) throws ParseException { if (field != null && slop == 1) { field = "z" + field; } return super.getFieldQuery(field, queryText, slop); } }; BooleanQuery expected = new BooleanQuery(); expected.add(new TermQuery(new Term("a", "zabc")), BooleanClause.Occur.SHOULD); expected.add(new TermQuery(new Term("b", "zabc")), BooleanClause.Occur.SHOULD); assertEquals("Expected a mangled query", expected, parser.parse("\"abc\"~1")); } {noformat} was (Author: trejkaz): Here's an example illustrating the way we were using it, although instead of changing the query text we're actually returning a different query class -- that class isn't in Lucene Core and also it's easier to build up an expected query if it's just a TermQuery. public void testOverrideGetFieldQuery() throws Exception { String[] fields = { "a", "b" }; QueryParser parser = new MultiFieldQueryParser(fields, new StandardAnalyzer()) { protected Query getFieldQuery(String field, String queryText, int slop) throws ParseException { if (field != null && slop == 1) { field = "z" + field; } return super.getFieldQuery(field, queryText, slop); } }; BooleanQuery expected = new BooleanQuery(); expected.add(new TermQuery(new Term("a", "zabc")), BooleanClause.Occur.SHOULD); expected.add(new TermQuery(new Term("b", "zabc")), BooleanClause.Occur.SHOULD); assertEquals("Expected a mangled query", expected, parser.parse("\"abc\"~1")); } > MultiFieldQueryParser is not friendly for overriding > getFieldQuery(String,String,int) > ------------------------------------------------------------------------------------- > > Key: LUCENE-1245 > URL: https://issues.apache.org/jira/browse/LUCENE-1245 > Project: Lucene - Java > Issue Type: Improvement > Components: QueryParser > Affects Versions: 2.3.2 > Reporter: Trejkaz > Attachments: multifield.patch > > > LUCENE-1213 fixed an issue in MultiFieldQueryParser where the slop parameter > wasn't being properly applied. Problem is, the fix which eventually got > committed is calling super.getFieldQuery(String,String), bypassing any > possibility of customising the query behaviour. > This should be relatively simply fixable by modifying > getFieldQuery(String,String,int) to, if field is null, recursively call > getFieldQuery(String,String,int) instead of setting the slop itself. This > gives subclasses which override either getFieldQuery method a chance to do > something different. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]