Author image Marvin Humphrey
and 1 contributors


KinoSearch::Search::Searchable - Base class for searchers.


    # Abstract base class.


Base class for searchers.

Abstract base class for objects which search. Core subclasses include KinoSearch::Searcher and KinoSearch::Search::PolySearcher.


new( [labeled params] )

    package MySearchable;
    use base qw( KinoSearch::Search::Searchable );
    sub new {
        my $self = shift->SUPER::new;
        return $self;

Abstract constructor.

  • schema - A KinoSearch::Schema.


hits( [labeled params] )

Return a Hits object containing the top results.

  • query - Either a Query object or a query string.

  • offset - The number of most-relevant hits to discard, typically used when "paging" through hits N at a time. Setting offset to 20 and num_wanted to 10 retrieves hits 21-30, assuming that 30 hits can be found.

  • num_wanted - The number of hits you would like to see after offset is taken into account.

  • sort_spec - A KinoSearch::Search::SortSpec, which will affect how results are ranked and returned.


If the supplied object is a Query, return it; if it's a query string, create a QueryParser and parse it to produce a query against all indexed fields.


Accessor for the object's schema member.


collect( [labeled params] )

Iterate over hits, feeding them into a HitCollector.

  • query - A Query.

  • collector - A HitCollector.


Return the maximum number of docs in the collection represented by the Searchable, which is also the highest possible doc id. Deleted docs are included in this count.

doc_freq( [labeled params] )

Return the number of documents which contain the term in the given field.

  • field - Field name.

  • term - The term to look up.

fetch_doc( [labeled params] )

Retrieve a document. Throws an error if the doc id is out of range.

  • doc_id - A document id.

  • score - A floating point score.

  • offset - Amount to be added to the doc_id if this Searchable is a subcomponent of another.


KinoSearch::Search::Searchable isa KinoSearch::Obj.


Copyright 2005-2009 Marvin Humphrey

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.