The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

KinoSearchX::Simple - Simple KinoSearch1 Interface, inspired by the now depricated Plucene::Simple

SYNOPSIS

    use KinoSearchX::Simple;

    my $searcher = KinoSearchX::Simple->new(
        'index_path' => '/tmp/search_index',
        'schema' => [
            {
                'name' => 'title',
                'boost' => 3,
            },{
                'name' => 'description',
            },{
                'name' => 'id',
            },
        ],
        'search_fields' => ['title', 'description'],
        'search_boolop' => 'AND',
    );

    $searcher->create({
        'id' => 1,
        'title' => 'fibble',
        'description' => 'wibble',
    });

    #important - always commit after updating the index!
    $searcher->commit;

    my ( $results, $pager ) = $searcher->search( 'fibble' );

DESCRIPTION

Simple interface to KinoSearch1. Use if you want to use KinoSearch1 and are lazy :p

FUNCTIONS

search( $query_string, $page ) - search index

    my ( $results, $pager ) = $searcher->search( $query, $page );

create( $document ) - add item to index

    $searcher->create({
        'id' => 1,
        'title' => 'this is the title',
        'description' => 'this is the description',
    });

not that it has to be, but its highly recommended that id is a unique identifier for this document

or you'll have to pass $pk to update_or_create

update_or_create( $document, $pk, $pv ) - updates or creates document in the index

    $searcher->update_or_create({
        'id' => 1,
        'title' => 'this is the updated title',
        'description' => 'this is the description',
    }, 'id');

$pk is the unique key to lookup by, defaults to 'id'

delete( $key, $value ) - remove document from the index

    $searcher->delete( 'id', 1 );

finds $key with $value and removes from index

commit() - commits and optimises index after adding documents

    $searcher->commit();

you must call this after you have finished adding items to the index

ADVANCED

when creating the KinoSearchX::Simple object you can specify some advanced options

language

set's language for default _analyser of KinoSearch1::Analysis::PolyAnalyzer

_analyser

set analyser, defualts to KinoSearch1::Analysis::PolyAnalyzer

search_fields

fields to search by default, takes an arrayref

search_boolop

can be OR or AND

search boolop, defaults to or. e.g the following query

    "this is search query"

becomes

    "this OR is OR search OR query"

can be changed to AND, in which case the above becomes

    "this AND is AND search AND query"

resultclass

resultclass for results, defaults to KinoSearchX::Simple::Result::Object which creates acessors for each key => value returned

could be changed tp KinoSearchX::Simple::Result::Hash for a plain old, hashref or a custom class

entries_per_page

default is 100

SUPPORT

Bugs should always be submitted via the CPAN bug tracker

For other issues, contact the maintainer

AUTHORS

n0body <n0body@thisaintnews.com>

SEE ALSO

http://thisaintnews.com, KinoSearch1, Data::Page, Moose

COPYRIGHT AND LICENSE

Copyright (C) 2010 by n0body http://thisaintnews.com/

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.1 or, at your option, any later version of Perl 5 you may have available.