List Info

Thread: Query parser bug?




Query parser bug?
country flaguser name
Israel
2007-10-22 09:38:17
The following test script was written to test what I found
as a possible 
bug in query parser

    #!/usr/bin/perl
    use strict;
    use Search::Xapian qw/:standard/;
    my $QueryParser = new Search::Xapian::QueryParser();
    $QueryParser->set_default_op(OP_AND);
    $QueryParser->set_stemmer(new
Search::Xapian::Stem("english"));
    $QueryParser->set_stemming_strategy(STEM_SOME);

    print "this script is to test the LoveHate feature.
Notice that when
    phrases are not surrounded by brackets, the -notallowed
translates
    to a regular AND search rather than a AND_NOT as it
should benn";

    print "right:
".$QueryParser->parse_query(qq{testing search
    -notallowed},(FLAG_BOOLEAN | FLAG_PHRASE | FLAG_LOVEHATE
|
    FLAG_WILDCARD))."n";
    print "right:
".$QueryParser->parse_query(qq{("testing
phrase")
    -notallowed},(FLAG_BOOLEAN | FLAG_PHRASE | FLAG_LOVEHATE
|
    FLAG_WILDCARD))."n";
    print "wrong:
".$QueryParser->parse_query(qq{"testing
phrase"
    -notallowed},(FLAG_BOOLEAN | FLAG_PHRASE | FLAG_LOVEHATE
|
    FLAG_WILDCARD))."n";  


This is the output:

    this script is to test the LoveHate feature. Notice that
when
    phrases are not surrounded by brackets, the -notallowed
translates
    to a regular AND search rather than a AND_NOT as it
should be

    right: Xapian::Query(((Ztest:(pos=1) AND
Zsearch:(pos=2)) AND_NOT
    Znotallow:(pos=3)))
    right: Xapian::Query(((testing:(pos=1) PHRASE 2
phrase:(pos=2))
    AND_NOT Znotallow:(pos=3)))
    wrong: Xapian::Query(((testing:(pos=1) PHRASE 2
phrase:(pos=2)) AND
    Znotallow:(pos=3)))

Notice that the third search has [AND Znotallow:(pos=3)]
rather than 
[AND_NOT Znotallow:(pos=3)]
As you can see from the second, if forcing the phrase into
(), it 
manages to parse the query properly, but it should have done
the same 
without it.
Your thoughts?

Ron


_______________________________________________
Xapian-discuss mailing list
Xapian-discusslists.xapian.org
http://lists.xapian.org/mailman/listinfo/xapian-discuss

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )