Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Class::DBI::Plugin::SeUser3Contributed Perl DocumeClass::DBI::Plugin::Senna(3)

NAME
       Class::DBI::Plugin::Senna - Add Instant Fulltext	Search Capability With
       Senna

SYNOPSIS
	 package MyDATA;
	 use base qw(Class::DBI);
	 use Class::DBI::Plugin::Senna (
	     index_filename => 'foo',
	     index_column   => 'column_name'
	 );

	 # in main portion of your code..
	 my $iter = MyDATA->fulltext_search($query);

DESCRIPTION
       Class::DBI::Plugin::Senna harnesses the power of	Senna
       (http://b.razil.jp/project/senna) with Class::DBI. This module installs
       hooks in	your Class::DBI	package	that automatically creates and updates
       a Senna index.

       You can then call fulltext_search() to retrieve the rows	that match the
       particular fulltext search.

       However,	because	Class::DBI is just a Perl wrapper (albeit a good one)
       around a	database, you will only	be able	to create simple indices --
       that is,	you can	only create an index against a single column, and not
       against multiple	columns. This may sound	limiting, but for anything
       more than that you really ought to be embedding Senna into the database
       itself, as that will allow for more complex searching.

HOW TO SETUP
       First set up your Class::DBI object like	you do normally. Then, add a
       few lines like this:

	 use Class::DBI::Plugin::Senna
	   index_filename => 'path/to/index',
	   index_column	  => 'name_of_column'
	 ;

       "index_filename"	is the name of the index file that Senna will create.
       "index_column" is the name of the column	that you want to build your
       index on. Class::DBI::Plugin::Senna will	*ONLY* create an index on this
       column alone -- it is possible to apply the same	hook that this module
       does on multiple	columns, but the cross-column search just gets too
       hairy.  If you want more	power, you really should be embedding Senna in
       your database (like Senna does for mysql).

       Class::DBI::Plugin::Senna willbe	responsible for	creating/opening the
       index file. If you want to specify non-default arguments	to the
       create()	method for Senna::Index, you can add a "index_createargs"
       parameter in the	above list:

	 use Class::DBI::Plugin::Senna
	   index_filename => 'path/to/index',
	   index_column	  => 'name_of_column',
	   index_createargs => [ $key_size, $flags, $n_segments, $encoding ]
	 ;

       Once you	do that, your Class::DBI object	will now automatically update
       the Senna index for the particular column you chose as  you invoke the
       regular Class::DBI create/update/delete methods.	These will all update
       the index accordingly:

	 $obj =	YourDataClass->create({	... });

	 $obj->your_indexed_column($new_value);
	 $obj->update;

	 $obj->delete;

       After you poopulate the index, you can perform a	fulltext search	on the
       column you specified by calling:

	 my $iter = YourDataClass->fulltext_search($query);

       $iter is	a special iterator class for Class::DBI::Plugin::Senna.	You
       can also	retrieve the whole list	of object that matches your query:

	 my @obj = YourDataClass->fulltext_search($query);

       That's it! Enjoyin searching :)

METHODS
   fulltext_search($query)
       Performs	a fulltext search on the column	specified in your class. In
       list context, returns a list of objects that match your particular
       query, an instance of Class::DBI::Plugin::Senna::Iterator.

   index_filename()
       Class method to get the name of the index file. Do NOT modify this
       value!

   index_column()
       Class method to get the name of the column that is being	indexed	by
       Senna.  Do NOT modify this value!

   index_createargs()
       Class method to get the list of arguments passed	to
       Senna::Index::create().	Do NOT modify this value!

   senna_index()
       Class method to get the Senna index object that is handling the index.
       You may performa	operations on it, but do not set it to a new index or
       such.

CAVEATS
       The senna index is maitained if and only	if you perform your updates
       through this interface! If you go and change the	data behind the	scenes
       (by using a interactive shell, for example), then the actual data and
       the index will be out of	sync.

       This module uses	triggers to update the index: if you do	any exotic
       data processing in the trigger chain that modifies the data, things may
       get a bit weird.

AUTHOR
       (c) Copyright 2005 by Daisuke Maki <dmaki@cpan.org>

       Development fundex by Brazil Ltd. <http://dev.razl.jp/projects/senna>

SEE ALSO
       Senna, Class::DBI

perl v5.32.0			  2005-06-20	  Class::DBI::Plugin::Senna(3)

NAME | SYNOPSIS | DESCRIPTION | HOW TO SETUP | METHODS | CAVEATS | AUTHOR | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Class::DBI::Plugin::Senna&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help