Changeset 2543


Ignore:
Timestamp:
02/24/10 08:27:57 (2 years ago)
Author:
karpet
Message:

do not expand SWISH dialect queries when default_field is not specified

Location:
Search-Query/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • Search-Query/trunk/Changes

    r2537 r2543  
    3838        * clarify NOT regex comments to include ! 
    3939        * new KSx dialect 
     40        * both KSx and SWISH dialects do not (as SQL dialect does) 
     41          expand to all defined if fields if 'default_field' is not 
     42          specified. 
     43 
  • Search-Query/trunk/lib/Search/Query/Dialect/SWISH.pm

    r2536 r2543  
    6767    #carp dump $self; 
    6868    $self->{wildcard} = '*'; 
    69     if ( $self->parser->fields ) { 
    70         $self->{default_field} ||= $self->parser->default_field 
    71             || [ sort keys %{ $self->parser->fields } ]; 
    72     } 
    73     else { 
    74         $self->{default_field} ||= $self->parser->default_field 
    75             || 'swishdefault'; 
    76     } 
     69 
     70    $self->{default_field} ||= $self->parser->default_field 
     71        || 'swishdefault'; 
     72 
     73    my $swishdefault_field; 
     74    eval { $swishdefault_field = $self->parser->get_field('swishdefault'); }; 
     75    if ( !$swishdefault_field ) { 
     76        $self->parser->{fields}->{swishdefault} 
     77            = Search::Query::Field::SWISH->new( name => 'swishdefault' ); 
     78    } 
     79 
    7780    if ( $self->{default_field} and !ref( $self->{default_field} ) ) { 
    7881        $self->{default_field} = [ $self->{default_field} ]; 
  • Search-Query/trunk/t/05-swish.t

    r2508 r2543  
    5050ok( my $query5 = $parser2->parse("joe smith"), "query5" ); 
    5151 
    52 is( $query5, 
    53     qq/(email=joe OR first_name=joe OR last_name=joe) OR (email=smith OR first_name=smith OR last_name=smith)/, 
    54     "query5 string" 
    55 ); 
     52is( $query5, qq/swishdefault=joe OR swishdefault=smith/, "query5 string" ); 
    5653 
    5754ok( my $query6 = $parser2->parse(qq/"joe smith"/), "query6" ); 
    5855 
    59 is( $query6, 
    60     qq/(email="joe smith" OR first_name="joe smith" OR last_name="joe smith")/, 
    61     "query6 string" 
    62 ); 
     56is( $query6, qq/swishdefault="joe smith"/, "query6 string" ); 
    6357 
    6458ok( my $parser3 = Search::Query::Parser->new( 
    65         fields           => [qw( foo bar )], 
    66         dialect          => 'SWISH', 
    67         croak_on_error   => 1, 
     59        fields         => [qw( foo bar )], 
     60        dialect        => 'SWISH', 
     61        croak_on_error => 1, 
    6862    ), 
    6963    "parser3" 
     
    7266ok( my $query7 = $parser3->parse('green'), "query7" ); 
    7367 
    74 is( $query7, qq/(bar=green OR foo=green)/, "query7 string" ); 
     68is( $query7, qq/swishdefault=green/, "query7 string" ); 
    7569 
    7670ok( my $parser4 = Search::Query::Parser->new( 
    77         fields           => [qw( foo )], 
    78         dialect          => 'SWISH', 
    79         croak_on_error   => 1, 
     71        fields         => [qw( foo )], 
     72        dialect        => 'SWISH', 
     73        croak_on_error => 1, 
    8074    ), 
    8175    "strict parser4" 
     
    9387        }, 
    9488        dialect          => 'SWISH', 
    95         query_class_opts => { 
    96             fuzzify        => 1, 
    97         }, 
    98         croak_on_error => 1, 
     89        query_class_opts => { fuzzify => 1, }, 
     90        croak_on_error   => 1, 
    9991    ), 
    10092    "parser5" 
     
    116108        fields           => [qw( foo )], 
    117109        dialect          => 'SWISH', 
    118         query_class_opts => { 
    119             fuzzify        => 1, 
    120         }, 
    121         croak_on_error => 1, 
     110        query_class_opts => { fuzzify => 1, }, 
     111        croak_on_error   => 1, 
    122112    ), 
    123113    "parser6" 
Note: See TracChangeset for help on using the changeset viewer.