| Search-Namazu documentation | Contained in the Search-Namazu distribution. |
Search::Namazu - Namazu library module for perl
use Search::Namazu;
@hlists = Search::Namazu::Search(index => '/usr/local/namazu/index',
query => 'foo');
foreach my $hlist (@hlists) {
print ($hlist->score, $hlist->uri, $hlist->date, $hlist->rank);
}
$x = Search::Namazu::Search(index => '/usr/local/namazu/index',
query => 'foo',
fields => ["uri", "from"]);
foreach my $rxs (@$x) {
print ($rxs->get("uri"), $rxs->score, $rxs->get("from"));
}
This module is an interface for Namazu library. Namazu is an implement of full text retrieval search system. It is available at: http://www.namazu.org/
The module implements Search::Namazu::Search function for searching. When the function is called, it will return the results as an array of Search::Namazu::Result object.
Search::Namazu::Result object has the score, URI, date and ranking as results of searching.
Search::Namazu::Search function has a reference of hash value as the argument. Keys for the hash are the following:
Specify a path of index. If you want to specify a index, you will need to specify the path as a scalar value. However, if you want to specify some indices, you will need to specify the paths as an array reference.
For example:
@result = Search::Namazu::Search(
index => ['/var/www/index/site1', '/var/www/index/site2'],
query => 'foo'
);
$resultref = Search::Namazu::Search(
index => ['/var/www/index/site1', '/var/www/index/site2'],
query => 'bar', returnas => 'reference'
);
Specify a query expression as string. Expression syntax is same as namazu command.
Specify sort method of results. You can use the following values:
Order by date.
Order by score.
Order by fields.
If you ommit this option, it is treated as same as NMZ_SORTBYDATE.
Specify sort order of results. You can use the following values:
Descend order.
Ascend order.
If you ommit this option, it is treated as same as NMZ_DESCENDSORT.
Specify field name when you specified sortMethod as NMZ_SORTBYFIELD.
Specify language.
Speciry maximum numbers of hits. Same as MaxHit directive in namazurc.
Speciry result object numbers of hits to limit too many results. If the parameter was omitted, it is assumed same value as maxhit.
Specify return method, if the parameter is set as 'reference', it returns a reference of array as a result.
Specify you want to get fields as a refrence of array. In the case, the result is returned as a reference of array, contains Search::Namazu::ResultXS objects.
Search::Namazu::Result object is for keeping result information. It has the following methods:
It returns score.
It returns URI.
It returns date.
It returns ranking number.
It returns summary.
It returns title.
It returns size.
Search::Namazu::ResultXS object is also for keeping result information. It has the following methods:
It returns score.
It returns date.
It returns ranking number.
It returns id of document.
It returns id of index.
It returns specified value of field.
Copyright 1999,2000,2001,2002 NOKUBI Takatsugu All rights reserved. This is free software with ABSOLUTELY NO WARRANTY.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
| Search-Namazu documentation | Contained in the Search-Namazu distribution. |
# # Search::Namazu.pm # # Copyright (C) 1999,2001-2003,2005 NOKUBI Takatsugu All rights reserved. # This is free software with ABSOLUTELY NO WARRANTY. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA # # $Id: Namazu.pm 269 2006-06-09 05:56:14Z knok $ # package Search::Namazu;
require Exporter; require DynaLoader; @ISA = qw(Exporter DynaLoader); @EXPORT = qw(NMZ_SORTBYDATE NMZ_SORTBYSCORE NMZ_SORTBYFIELD NMZ_ASCENDSORT NMZ_DESCENDSORT NMZ_NOT_SPECIFIED_INDEX NMZ_ERR_INDEX NMZ_ERR_EMPTY_QUERY NMZ_ERR_RESULT_EXCEEDED); # %EXPORT_TAGS = (all => [qw()]); $VERSION = '0.96'; bootstrap Search::Namazu $VERSION; use Carp; sub NMZ_SORTBYDATE { return 1; } sub NMZ_SORTBYSCORE { return 2; } sub NMZ_SORTBYFIELD { return 3; } sub NMZ_ASCENDSORT { return 16; } sub NMZ_DESCENDSORT { return 32; } sub NMZ_NOT_SPECIFIED_INDEX { return -1; } sub NMZ_ERR_INDEX { return -2; } sub NMZ_ERR_EMPTY_QUERY { return -3; } sub NMZ_ERR_RESULT_EXCEEDED { return -4; } # nmz_stat sub NMZ_SUCCESS { return 0; } sub NMZ_ERR_TOO_MUCH_HIT { return 6; } sub Search { my %args = @_; my $index = $args{'index'}; my $sortmeth = $args{'sortMethod'} || -1; my $sortord = $args{'sortOrder'} || -1; my $sortfield = $args{'sortField'} || -1; my $lang = $args{'lang'}; my $query = $args{'query'}; my $maxhit = $args{'maxhit'} || 10000; my $returnas = $args{'returnas'}; my $maxget = $args{'maxget'} || $maxhit; my $fields = $args{'fields'}; # initialize if (! defined $index) { return NMZ_NOT_SPECIFIED_INDEX; } my @indices; if (ref($index)) { for my $idx (@$index) { push @indices, $idx; } } else { @indices = ($index); } for my $idx (@indices) { if (nmz_addindex($idx) < 0) { return NMZ_ERR_INDEX; } } # set paramater if ( $sortmeth == NMZ_SORTBYDATE) { nmz_sortbydate(); } elsif ($sortmeth == NMZ_SORTBYSCORE) { nmz_sortbyscore(); } elsif ($sortfield && $sortmeth == NMZ_SORTBYFIELD) { nmz_setsortfield($sortfield); nmz_sortbyfield(); } else { nmz_sortbydate(); } if ($sortord == NMZ_DESCENDSORT) { nmz_descendingsort(); } elsif ($sortord == NMZ_ASCENDSORT) { nmz_ascendingsort(); } else { nmz_descendingsort(); } if (defined $lang) { nmz_setlang($lang); } nmz_setmaxhit($maxhit); # query and get hlist if (!defined $query) { return NMZ_ERR_RESULT_EXCEEDED; } # create Search::Namazu::Result object if (ref($fields) eq "ARRAY") { my $hlistref = call_search_main_fields($query, $maxget, $fields); my $status = nmz_getstatus(); if ($status != NMZ_SUCCESS) { return $status; } # return objects return $hlistref; } elsif ($returnas eq 'reference') { my $hlistref = call_search_main_ref($query, $maxget); my $status = nmz_getstatus(); if ($status != NMZ_SUCCESS) { return $status; } # return objects return $hlistref; } else { my @hlists = call_search_main($query, $maxget); my $status = nmz_getstatus(); if ($status != NMZ_SUCCESS) { return $status; } # return objects return @hlists; } } package Search::Namazu::Result; sub new { my $self = {}; $self->{'score'} = -1; $self->{'uri'} = ''; $self->{'date'} = 0; $self->{'rank'} = -1; bless $self; return $self; } sub set { my ($self, $score, $uri, $date, $rank, $summary, $title, $author, $size) = @_; $self->{score} = $score; $self->{uri} = $uri; $self->{date} = $date; $self->{rank} = $rank; $self->{summary} = $summary; $self->{title} = $title; $self->{author} = $author; $self->{size} = $size; } sub score { my $self = shift; if (@_) { my $score = shift; $self->{'score'} = $score; } $self->{'score'}; } sub uri { my $self = shift; if (@_) { my $uri = shift; $self->{'uri'} = $uri; } $self->{'uri'}; } sub date { my $self = shift; if (@_) { my $date = shift; $self->{'date'} = $date; } $self->{'date'}; } sub rank { my $self = shift; if (@_) { my $rank = shift; $self->{'rank'} = $rank; } $self->{'rank'}; } sub summary { my $self = shift; if (@_) { my $summary = shift; $self->{'summary'} = $summary; } $self->{'summary'}; } sub title { my $self = shift; if (@_) { my $title = shift; $self->{'title'} = $title; } $self->{'title'}; } sub author { my $self = shift; if (@_) { my $author = shift; $self->{'author'} = $author; } $self->{'author'}; } sub size { my $self = shift; if (@_) { my $size = shift; $self->{'size'} = $size; } $self->{'size'}; } 1; __END__