———package
Search::InvertedIndex::Query;
# $RCSfile: Query.pm,v $ $Revision: 1.7 $ $Date: 1999/10/20 16:35:45 $ $Author: snowhare $
use
strict;
use
Carp;
use
Class::NamedParms;
use
Class::ParmList;
@ISA
=
qw (Class::NamedParms);
$VERSION
=
'1.01'
;
=head1 NAME
Search::InvertedIndex::Query - A query for an inverted index search.
=head1 SYNOPSIS
=head1 DESCRIPTION
Provides methods for setting up a search query to be performed
by the search engine.
=head1 CHANGES
1.01 1999.06.30 - Documentation updates
=head2 Public API
Inherits 'get','set','clear' and 'exists' methods from Class::NamedParms
=cut
####################################################################
=head2 Initialization
=over 4
=item C<new($parm_ref);>
Returns and optionally initializes a new Search::InvertedIndex::Query
object.
Examples:
my $query = Search::InvertedIndex::Query->new;
my $query = Search::InvertedIndex::Query->new({ -logic => 'or',
-weight => 0.5,
-nodes => \@query_nodes,
-leafs => \@leaf_nodes,
});
-nodes must be 'Search::InvertedIndex::Query' objects.
-leafs must be 'Search::InvertedIndex::Query::Leaf' objects.
-logic applies to both -nodes (after search resolution) and -leafs.
If omitted, -logic is defaults to 'and'. Allowed logic values
are 'and', 'or' and 'nand'.
-weight is applied to the _result_ of a search of the Query object and
is optional (defaulted to '1' if omitted).
Inherits 'get/set' methods from Class::NamedParms - thus to 'append'
use the 'get' method on '-nodes' or '-leafs', 'push' the new
thing on the end of the anon array return, and use the 'set' method
to save the updated anon array.
=back
=cut
sub
new {
my
$proto
=
shift
;
my
$class
=
ref
(
$proto
) ||
$proto
;
my
$self
= Class::NamedParms->new(-logic, -nodes, -leafs, -weight);
bless
$self
,
$class
;
# Read any passed parms
my
(
$parm_ref
) = {};
if
(
$#_
== 0) {
$parm_ref
=
shift
;
}
elsif
(
$#_
> 0) {
%$parm_ref
=
@_
;
}
my
$parms
= Class::ParmList->new({
-parms
=>
$parm_ref
,
-legal
=> [-logic, -nodes, -leafs, -weight],
-required
=> [],
-defaults
=> {
-logic
=>
'and'
,
-nodes
=> [],
-leafs
=> [],
-weight
=> 1,
},
});
if
(not
defined
$parms
) {
my
$error_message
= Class::ParmList->error;
croak (__PACKAGE__ .
"::new() - $error_message\n"
);
}
$self
->set(
$parms
->all_parms);
$self
;
}
####################################################################
=head1 COPYRIGHT
Copyright 1999, Benjamin Franz (<URL:http://www.nihongo.org/snowhare/>) and
FreeRun Technologies, Inc. (<URL:http://www.freeruntech.com/>). All Rights Reserved.
This software may be copied or redistributed under the same terms as Perl itelf.
=head1 AUTHOR
Benjamin Franz
=head1 TODO
Everything.
=cut
1;