# $RCSfile: Query.pm,v $ $Revision: 1.7 $ $Date: 1999/10/20 16:35:45 $ $Author: snowhare $
use strict;
use Carp;
use vars qw (@ISA $VERSION);
@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;