Changeset 2565


Ignore:
Timestamp:
03/02/10 23:03:58 (5 months ago)
Author:
karpet
Message:

KS fix in svn for get_analyzers(); get stemmed wildcards working

File:
1 edited

Legend:

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

    r2561 r2565  
    411411                { 
    412412 
    413     # KS currently broken with no get_analyzers() method. 
    414     #                    my $analyzers = $field->analyzer->get_analyzers(); 
    415     #                    for my $ana (@$analyzers) { 
    416     #                        if (   $ana->isa('KinoSearch::Analysis::Stemmer') 
    417     #                            or $ana->can('stem') ) 
    418     #                        { 
    419     #                            $stemmer = $ana; 
    420     #                            last; 
    421     #                        } 
    422     #                    } 
     413                    # NOTE get_analyzers() not available in <=0.30_082 
     414                    # due to a bug in KS. 
     415                    # fixed in KS svn trunk as of r5884 
     416                    my $analyzers = $field->analyzer->get_analyzers(); 
     417                    for my $ana (@$analyzers) { 
     418                        if ( $ana->isa('KinoSearch::Analysis::Stemmer') ) { 
     419                            $stemmer = $ana; 
     420                            last; 
     421                        } 
     422                    } 
    423423                } 
    424                 elsif ($field->analyzer->isa('KinoSearch::Analysis::Stemmer') 
    425                     or $field->analyzer->can('stem') ) 
     424                elsif ( 
     425                    $field->analyzer->isa('KinoSearch::Analysis::Stemmer') ) 
    426426                { 
    427427                    $stemmer = $field->analyzer; 
     
    429429 
    430430                if ($stemmer) { 
    431                     carp "found stemmer"; 
    432431                    for my $tok (@tok) { 
    433                         if ( $tok =~ m/^\w\*$/ ) { 
    434                             $tok = $stemmer->stem($tok); 
     432                        if ( $tok =~ s/^(\w+)\*$/$1/ ) { 
     433                            my $stemmed = $stemmer->split($tok); 
     434 
     435                            # re-append the wildcard 
     436                            # TODO ever have multiple? 
     437                            $tok = $stemmed->[0] . '*'; 
    435438                        } 
    436439                    } 
    437440                } 
     441 
     442                @values = @tok; 
    438443 
    439444            } 
Note: See TracChangeset for help on using the changeset viewer.