Saurabh Vasekar wrote on 6/14/12 1:25 PM:
> Hello,
> 
> I want to implement the following specification.
> My indexed document has 2 fields -- field1 and field2. I formed the
> following query -
> 
> my $query1 = Lucy::Search::TermQuery->new(
>          field => 'field1',
>          term => 'term1'.
> );
> 
> my $query2 = Lucy::Search::TermQuery->new(
>         field => 'field2',
>         term => 'term2',
> );
> 
> my $query1NOT = Lucy::Search::NOTQuery->new(
>         negated_query => $query1,
> );
> 
> my $query = Lucy::Search::ANDQuery->new(
>        children => [$query1NOT, $query2 ]
> );
> 
> my $hits = $searcher->hits(
>         query => $query,
>         offset => $offset,
>         num_wanted => $page_size,
> );
> 
> The problem is that query1 is not being negated. I am getting results which
> have both term1 and term2 whereas the result should contain only term2.
> 
> Is my implementation wrong? Is there any better method to do this?
> 

The syntax looks right to me.

It's hard to tell if you've implemented this right or wrong since the use case
you provide isn't complete. E.g., I don't know what is in the index. A fully
runnable piece of code would help.

I use NOT queries all the time with Search::Query::Dialect::Lucy, so I know the
Lucy feature works.


-- 
Peter Karman  .  http://peknet.com/  .  [email protected]

Reply via email to