Changeset 2541


Ignore:
Timestamp:
02/23/10 19:50:01 (2 years ago)
Author:
karpet
Message:

KSx does not expand all defined fields to be default when a default_field is not defined, since KS will search all fields by default

Location:
Search-Query/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • Search-Query/trunk/lib/Search/Query/Dialect.pm

    r2536 r2541  
    1414use Clone; 
    1515 
    16 __PACKAGE__->mk_accessors( qw( default_field parser ) ); 
     16__PACKAGE__->mk_accessors(qw( default_field parser )); 
    1717 
    1818our $VERSION = '0.08'; 
     
    209209    my $self = shift; 
    210210    my $field = $self->default_field || $self->parser->default_field; 
    211     if ( !$field ) { 
     211    if ( !defined $field ) { 
    212212        croak "must define a default_field"; 
    213213    } 
  • Search-Query/trunk/lib/Search/Query/Dialect/KSx.pm

    r2538 r2541  
    6363    #carp dump $self; 
    6464    $self->{wildcard} = '*'; 
    65     if ( $self->parser->fields ) { 
    66         $self->{default_field} ||= $self->parser->default_field 
    67             || [ sort keys %{ $self->parser->fields } ]; 
    68     } 
    69     else { 
    70         $self->{default_field} ||= $self->parser->default_field 
    71             || 'swishdefault'; 
    72     } 
     65 
    7366    if ( $self->{default_field} and !ref( $self->{default_field} ) ) { 
    7467        $self->{default_field} = [ $self->{default_field} ]; 
     
    152145 
    153146    # make sure we have a field 
     147    my $default_field = $self->default_field || $self->parser->default_field; 
    154148    my @fields 
    155149        = $clause->{field} 
    156150        ? ( $clause->{field} ) 
    157         : ( @{ $self->_get_default_field } ); 
     151        : ( @{ defined $default_field ? @$default_field : [] } ); 
    158152 
    159153    # what value 
     
    162156        ? $clause->{value} 
    163157        : $self->_doctor_value($clause); 
     158 
     159    # if we have no fields, we're done 
     160    return $value unless @fields; 
    164161 
    165162    my $wildcard = $self->wildcard; 
  • Search-Query/trunk/lib/Search/Query/Parser.pm

    r2536 r2541  
    279279=item default_field 
    280280 
    281 Applied to all terms where no field is defined. The default value is undef (no default). 
     281Applied to all terms where no field is defined.  
     282The default value is undef (no default). 
    282283 
    283284=item default_op 
  • Search-Query/trunk/t/06-ks.t

    r2540 r2541  
    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/joe OR 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/joe smith/, "query6 string" ); 
    6357 
    6458ok( my $parser3 = Search::Query::Parser->new( 
     
    7266ok( my $query7 = $parser3->parse('green'), "query7" ); 
    7367 
    74 is( $query7, qq/(bar:green OR foo:green)/, "query7 string" ); 
     68is( $query7, qq/green/, "query7 string" ); 
    7569 
    7670ok( my $parser4 = Search::Query::Parser->new( 
     
    186180    "parse alias_for with no default field and no field specified" 
    187181); 
    188 is( $query_alias_for2, qq/field2:foo/, "query expanded omits aliases" ); 
     182is( $query_alias_for2, qq/foo/, "query expanded omits aliases" ); 
Note: See TracChangeset for help on using the changeset viewer.