[
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:32 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) {
queryText = "z" + queryText;
}
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.
{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}
> 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]