lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Trejkaz (JIRA)" <>
Subject [jira] Commented: (LUCENE-1245) MultiFieldQueryParser is not friendly for overriding getFieldQuery(String,String,int)
Date Thu, 27 Mar 2008 00:13:28 GMT


Trejkaz commented on LUCENE-1245:

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:
>             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:
For additional commands, e-mail:

View raw message