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

Reply via email to