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::QueryParser - Transform a string into a Query object.
my $query_parser = KinoSearch::QueryParser->new( schema => MySchema->new, fields => [ 'body' ], ); my $query = $query_parser->parse( $query_string ); my $hits = $searcher->search( query => $query );
The QueryParser accepts UTF-8 search strings as input and produces Query objects, suitable for feeding into KinoSearch::Searcher.
The following constructs are recognized by QueryParser.
Boolean operators 'AND', 'OR', and 'AND NOT'.
Prepented +plus and -minus, indicating that the labeled entity should be either required or forbidden -- be it a single word, a phrase, or a parenthetical group.
Logical groups, delimited by parentheses.
Phrases, delimited by double quotes.
Additionally, the following syntax can be enabled via set_heed_colons():
Field-specific terms, in the form of
fieldname:termtext. (The field specified by fieldname will be used instead of the QueryParser's default fields).
A field can also be given to a logical group, in which case it is the same as if the field had been prepended onto every term in the group. For example:
foo:(bar baz)is the same as
my $query_parser = KinoSearch::QueryParser->new( schema => MySchema->new, # required analyzer => $analyzer, # overrides schema fields => [ 'bodytext' ], # default: indexed fields default_boolop => 'AND', # default: 'OR' );
Constructor. Takes hash-style parameters. Either
analyzermust be supplied.
schema - An object which subclasses KinoSearch::Schema.
analyzer - An object which subclasses KinoSearch::Analysis::Analyzer. Ordinarily, the analyzers specified by each field's definition will be used, but if
analyzeris supplied, it will override and be used for all fields. This can lead to mismatches between what is in the index and what is being searched for, so use caution.
fields - the names of the fields which will be searched against. By default, those fields which are defined as indexed in the supplied Schema.
default_boolop - two possible values: 'AND' and 'OR'. The default is 'OR', which means: return documents which match any of the query terms. If you want only documents which match all of the query terms, set this to 'AND'.
my $query = $query_parser->parse( $query_string );
Turn a UTF-8 query string into a Query object. Depending on the contents of the query string, the returned object could be any one of several subclasses of KinoSearch::Search::Query.
$query_parser->set_heed_colons(1); # enable
Enable/disable special parsing of
Copyright 2005-2007 Marvin Humphrey
See KinoSearch version 0.20.