Peter Karman > SWISH-Prog-0.73 > SWISH::Prog::Aggregator::DBI

Download:
SWISH-Prog-0.73.tar.gz

Dependencies

Annotate this POD

Website

CPAN RT

Open  0
View/Report Bugs
Module Version: 0.73   Source   Latest Release: SWISH-Prog-0.75

NAME ^

SWISH::Prog::Aggregator::DBI - index DB records with Swish-e

SYNOPSIS ^

    use SWISH::Prog::Aggregator::DBI;
    use Carp;
    
    my $aggregator = SWISH::Prog::Aggregator::DBI->new(
        db => [
            "DBI:mysql:database=movies;host=localhost;port=3306",
            'some_user', 'some_secret_pass',
            {
                RaiseError  => 1,
                HandleError => sub { confess(shift) },
            }
        ],
        schema => {
          'moviesIlike' => {
               title       => {type => 'char', bias => 1},
               synopsis    => {type => 'char', bias => 1},
               year        => {type => 'int',  bias => 1},
               director    => {type => 'char', bias => 1},
               producer    => {type => 'char', bias => 1},
               awards      => {type => 'char', bias => 1},
               date        => {type => 'date', bias => 1},
               swishdescription => { synopsis => 1, producer => 1 },
               swishtitle       => 'title',
          }
        }
        use_quotes      => 1,
        quote_char      => '`', # backtick
        alias_columns   => 1,
        indexer         => SWISH::Prog::Indexer::Native->new,
    );
    
    $aggregator->crawl();

DESCRIPTION ^

SWISH::Prog::Aggregator::DBI is a SWISH::Prog::Aggregator subclass designed for providing full-text search for databases.

METHODS ^

Since SWISH::Prog::Aggregator::DBI inherits from SWISH::Prog::Aggregator, read that documentation first. Any overridden methods are documented here.

new( opts )

Create new aggregator object.

The following opts are required:

db => connect_info

connect_info is passed directly to DBI's connect() method, so see the DBI docs for syntax. If connect_info is a DBI handle object, it is accepted as is. If connect_info is an array ref, it will be dereferenced and passed to connect(). Otherwise it will be passed to connect as is.

schema => db_schema

db_schema is a hashref of table names and column descriptions. Each key should be a table name. Each value should be a hashref of column descriptions, where the key is the column name and the value is a hashref of type and bias. See the SYNOPSIS.

There are two special column names: swishtitle and swishdescription. These are reserved for mapping real column names to Swish-e property names for returning in search results. swishtitle should be the name of a column, and swishdescription should be a hashref of column names to include in the StoreDescription value.

indexer => indexer_obj

A SWISH::Prog::Indexer-derived object.

The following opts are optional:

alias_columns => 0|1

The alias_columns flag indicates whether all columns should be searchable under the default MetaName of swishdefault. The default is 1 (true). This is not the default behaviour of swish-e; this is a feature of SWISH::Prog.

use_quotes

Boolean indicating whether column and table names should be quoted. This is typically DBD-specific (e.g., MySQL requires this be true). Default is true.

quote_char

The character to use when use_quotes is true. Default is ` (backtick).

NOTE: The new() method simply inherits from SWISH::Prog::Aggregator, so any params valid for that method are allowed here.

init

See SWISH::Prog::Class. This method does all the setup.

crawl

Create index.

Returns number of rows indexed.

AUTHOR ^

Peter Karman, <perl@peknet.com>

BUGS ^

Please report any bugs or feature requests to bug-swish-prog at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=SWISH-Prog. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT ^

You can find documentation for this module with the perldoc command.

    perldoc SWISH::Prog

You can also look for information at:

COPYRIGHT AND LICENSE ^

Copyright 2008-2009 by Peter Karman

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO ^

http://swish-e.org/

syntax highlighting: