XAO-Indexer

 view release on metacpan or  search on metacpan

t/testcases/Indexer/search.pm  view on Meta::CPAN

            text        => 'foo_32,foo_147,foo_91',
            use_oid     => 1,
        },
        t20 => {
            query       => $ucwords[0],
            text        => '162,154,153,168,157,165,151,169,158,166,161,170,167,155,164,163',
        },
        t21 => {
            query       => $ucwords[1],
            text        => '162,154,168,169,158,152,161,170,160,156,167,155,164,163',
        },
        t22 => {
            query       => $ucwords[5],
            text        => '162,154,153,168,157,165,151,169,158,152,166,161,170,160,156,164',
        },
        t23 => {
            query       => $ucwords[6],
            text        => '162,154,153,168,165,151,169,166,160,156,167,155,164,163',
        },
        t24 => {
            query       => qq("$ucwords[5] $ucwords[5]"),
            text        => '154',
        },
        t25 => {
            query       => qq($ucwords[0] $ucwords[1]),
            text        => '162,154,168,169,158,161,170,167,155,164,163',
        },
        t26 => {
            query       => qq($ucwords[0] $ucwords[1] $ucwords[2]),
            text        => '168,158,161,170,167,155,164,163',
        },
        t27 => {
            query       => qq($ucwords[0] $ucwords[1] $ucwords[2] $ucwords[3]),
            text        => '168,158,161,167,164,163',
        },
        t28 => {
            query       => qq($ucwords[0] $ucwords[1] $ucwords[2] $ucwords[3] $ucwords[4] $ucwords[5] $ucwords[6]),
            text        => '168,164',
        },
        t29 => {
            query       => qq("$ucwords[3] $ucwords[4] $ucwords[5]"),
            text        => '161',
        },
        t30 => {
            query       => qq(birkh user),
            text        => '',
        },
        t31 => {
            query       => qq(trang),
            text        => '',
        },
    );

    foreach my $test_id (keys %matrix) {
        my $test=$matrix{$test_id};
        my $query=$test->{'query'};
        foreach my $oname (sort keys %$test) {
            next if $oname eq 'query';
            next if $oname eq 'ignored';
            next if $oname eq 'use_oid';
            my %rcdata;
            my $sr;
            if($test->{'ignored'}) {
                $sr=$test->{'use_oid'} ? $foo_index->search_by_string_oid($oname,$query,\%rcdata)
                                       : $foo_index->search_by_string($oname,$query,\%rcdata);
                foreach my $w (keys %{$test->{'ignored'}}) {
                    my $expect=$test->{'ignored'}->{$w};
                    my $got=$rcdata{'ignored_words'}->{$w};
                    if(defined $expect) {
                        $self->assert(defined($got),
                                      "Expected '$w' to be ignored, but it is not");
                        $self->assert($got == $expect,
                                      "Expected count $expect on ignored $w, got $got");
                    }
                    else {
                        $self->assert(!defined($got),
                                      "Expected '$w' not to be ignored, but it is (count=".($got||'').")");
                    }
                }
            }
            else {
                $sr=$test->{'use_oid'} ? $foo_index->search_by_string_oid($oname,$query)
                                       : $foo_index->search_by_string($oname,$query);
            }
            my $got=join(',',@$sr);
            my $expect=$test->{$oname};
            if($got ne $expect) {
                dprint "===>>>> test=$test_id o=$oname got='$got' expected='$expect'";
                dprint ">>>Q='$query'";
                if(@$sr && !$test->{'use_oid'}) {
                    my $coll=$foo_index->get_collection_object;
                    for(my $i=0; $i<5 && $i<@$sr; ++$i) {
                        my $obj=$coll->get($sr->[$i]);
                        my ($name,$text)=$obj->get('name','text');
                        dprint ">>>>i=$i, id=$sr->[$i]";
                        dprint ">>>>>name='$name'";
                        dprint ">>>>>text='$text'";
                    }
                }
            }
            $self->assert($got eq $expect,
                          "Test $test_id, ordering $oname, expected $expect, got $got");
        }
    }
}

###############################################################################
1;



( run in 1.291 second using v1.01-cache-2.11-cpan-6aa56a78535 )