The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

KinoSearch::Search::SortSpec - Specify a custom sort order for search results.

SYNOPSIS

    my $sort_spec = KinoSearch::Search::SortSpec->new;
    $sort_spec->add( field => 'date' );
    my $hits = $searcher->search(
        query     => $query,
        sort_spec => $sort_spec,
    );

DESCRIPTION

By default, searches return results in order of relevance. SortSpec allows you to indicate an alternate order, using the contents of one or more fields.

Fields you wish to sort against must be indexed but must not be analyzed, as each document needs to be associated with a single value.

Memory and Caching

Each field that you sort against requires a sort cache, which is a C array of 32-bit integers. For each cache, the memory requirements are 4 bytes for each document in the index, plus loose change for object overhead. Additionally, a cache comprising some fraction of the terms in the index must be loaded. The time it takes to warm these caches on the first sorted search can be noticeable, but if you reuse your Searcher subsequent searches should be faster.

METHODS

new

    my $sort_spec = KinoSearch::Search::SortSpec->new;

Constructor. Takes no arguments.

add

    $sort_spec->add( 
        field   => $field_name,   # required
        reverse => 1,             # default: 0
    );

Add a field to sort against. Multiple sort criteria are processed in the order they were added (so the first to be added is the most important). Takes labeled parameters.

  • field - The name of a field which is indexed but not analyzed.

  • reverse - Reverse the order of the sort for this particular field.

COPYRIGHT

Copyright 2007 Marvin Humphrey

LICENSE, DISCLAIMER, BUGS, etc.

See KinoSearch version 0.20.