| Foorum documentation | Contained in the Foorum distribution. |
Foorum::Search - search Foorum
use Foorum::Search;
my $search = new Foorum::Search;
my $ret = $search->query('topic', { author_id => 1, title => 'test', page => 2, per_page => 20 } );
# this ->query would use Foorum::Search::Sphinx when 'searchd' is available.
# or else, use Foorum::Search::Database to get the results.
This module is mainly to design the interface of Foorum search regardless the backend (Sphinx or Database or others)
Fayland Lam <fayland at gmail.com>
| Foorum documentation | Contained in the Foorum distribution. |
package Foorum::Search; use strict; use warnings; our $VERSION = '1.001000'; use Foorum::Search::Sphinx; use Foorum::Search::Database; sub new { my $class = shift; my $self = {@_}; my $sphinx = new Foorum::Search::Sphinx; if ( $sphinx->can_search() ) { $self->{use_sphinx} = 1; $self->{sphinx} = $sphinx; } else { $self->{use_db} = 1; $self->{db} = new Foorum::Search::Database; } return bless $self => $class; } sub query { my ( $self, $type, $params ) = @_; # if Sphinx searchd is on and Foorum::Search::Sphinx implemented the $type if ( $self->{use_sphinx} and $self->{sphinx}->can($type) ) { return $self->{sphinx}->query( $type, $params ); } elsif ( $self->{db}->can($type) ) { # if Foorum::Search::Database implemented the $type return $self->{db}->query( $type, $params ); } } 1; __END__