Changeset 2876
- Timestamp:
- 07/08/10 22:45:27 (19 months ago)
- Location:
- Search-Query/trunk
- Files:
-
- 2 edited
-
lib/Search/Query/Parser.pm (modified) (2 diffs)
-
t/07-term-expander.t (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
Search-Query/trunk/lib/Search/Query/Parser.pm
r2845 r2876 577 577 } 578 578 579 my $query_class = $self->{query_class}; 580 579 581 $query->walk( 580 582 sub { … … 589 591 $clause->value( $newterms[0] ); 590 592 } 593 elsif ( @newterms > 1 ) { 594 595 # turn $clause into a tree 596 my $class = blessed($clause); 597 my $op = $clause->op; 598 my $field = $clause->field; 599 my $proximity = $clause->proximity; 600 my $quote = $clause->quote; 601 602 #warn "before tree: " . dump $tree; 603 604 #warn "code clause: " . dump $clause; 605 my @subclauses; 606 for my $term (@newterms) { 607 push( 608 @subclauses, 609 $class->new( 610 field => $field, 611 op => $op, 612 value => $term, 613 quote => $quote, 614 proximity => $proximity, 615 ) 616 ); 617 } 618 619 # OR the fields together. TODO optional? 620 621 # we must bless here because 622 # our bool op keys are not methods. 623 my $subclause = bless( { "" => \@subclauses }, $query_class ); 624 $subclause->init( %{ $self->query_class_opts }, 625 parser => $self ); 626 627 $clause->op('()'); 628 $clause->value($subclause); 629 } 591 630 else { 592 $clause->value( '(' . join( ' OR ', @newterms ) . ')');631 $clause->value( $newterms[0] ); 593 632 } 594 633 -
Search-Query/trunk/t/07-term-expander.t
r2845 r2876 15 15 16 16 ok( my $query = $parser->parse("foo=bar"), "parse foo=bar" ); 17 is( "$query", qq/+foo=(one OR two OR three OR bar)/, "query expanded" ); 17 my $expect = qq/+(foo=one foo=two foo=three foo=bar)/; 18 is( "$query", $expect, "query expanded" ); 18 19
Note: See TracChangeset
for help on using the changeset viewer.