27 Oct 2007 19:46:10 UTC
- Development release
- Distribution: KinoSearch
- Source (raw)
- Browse (raw)
- How to Contribute
- Issues (5)
- Testers (21 / 5 / 2)
- KwaliteeBus factor: 0
- License: perl_5
- Activity24 month
- Download (460.82KB)
- MetaCPAN Explorer
- Subscribe to distribution
- This version
- Latest versionCREAMYG Marvin Humphreyand 1 contributors
- Marvin Humphrey <marvin at rectangular dot com>
- LICENSE, DISCLAIMER, BUGS, etc.
KinoSearch::Searcher - Execute searches.
my $searcher = KinoSearch::Searcher->new( invindex => MySchema->read('/path/to/invindex'), ); my $hits = $searcher->search( query => 'foo bar' offset => 0, num_wanted => 100, );
Use the Searcher class to perform search queries against an invindex.
Searcher's behavior is closely tied to that of KinoSearch::Index::IndexReader. If any of these criteria apply to your application, please consult IndexReader's documentation:
Persistent environment (e.g. mod_perl, FastCGI).
Index located on shared filesystem, such as NFS.
my $searcher = KinoSearch::Searcher->new( invindex => MySchema->read('/path/to/invindex'), ); # or... my $searcher = KinoSearch::Searcher->new( reader => $reader );
Constructor. Takes labeled parameters. Either
invindex - an object which isa KinoSearch::InvIndex.
reader - an object which isa KinoSearch::Index::IndexReader.
my $hits = $searcher->search( query => $query, # required offset => 20, # default: 0 num_wanted => 10, # default: 10 filter => $filter, # default: undef (no filtering) sort_spec => $sort_spec, # default: undef (sort by relevance) );
Process a search and return a Hits object. search() expects labeled hash-style parameters.
query - Can be either an object which subclasses KinoSearch::Search::Query or a query string. If it's a query string, it will be parsed using a QueryParser and a search will be performed against all indexed fields in the InvIndex. For more sophisticated searching, supply Query objects, such as TermQuery and BooleanQuery.
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
offsetis taken into account.
sort_spec - Must be a KinoSearch::Search::SortSpec, which will affect how results are ranked and returned.
my $reader = $searcher->get_reader;
Return the Searcher's inner IndexReader.
Experimental, expert API.
set_prune_factor() enables a lossy, heuristic optimization which can yield significantly improved performance at the price of a small penalty in relevance. It is only useful when 1) you have a way of establishing an absolute rank for all documents -- e.g. page score, date of publication, price; and 2) that primary ranking heavily influences which documents you want returned. Schema->pre_sort is used to control this sort order.
prune_factor is a multiplier which affects how prematurely searching a particular segment terminates. 10 is a decent default.
Copyright 2005-2007 Marvin Humphrey
See KinoSearch version 0.20.