The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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',
          }
        }
        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.

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/