Initial releases of Dezi and Dezi::Client are now on CPAN: https://metacpan.org/module/Dezi https://metacpan.org/module/Dezi::Client
Dezi is a search platform built on Swish3, Apache Lucy, Search::OpenSearch and Plack. Dezi provides a RESTful HTTP interface to Lucy indexes. >From the SYNOPSIS: Start the Dezi server, listening on port 5000: % dezi -p 5000 Add a document to the index: % curl http://localhost:5000/index/foo -XPOST \ -d '<doc><title>bar</title>hello world</doc>' \ -H 'Content-Type: application/xml' Search the index: % curl 'http://localhost:5000/search?q=bar' Or instead of curl one-liners, use the Dezi::Client: use Dezi::Client; # open a connection my $client = Dezi::Client->new( server => 'http://localhost:5000', ); # add/update a filesystem document to the index $client->index( 'path/to/file.html' ); # add/update an in-memory document to the index $client->index( \$html_doc, uri => 'foo/bar.html' ); # add/update a Dezi::Doc to the index $client->index( $dezi_doc ); # remove a document from the index $client->delete( '/doc/uri/relative/to/index' ); # search the index my $response = $client->search( q => 'foo' ); # iterate over results for my $result (@{ $response->results }) { printf("--\n uri: %s\n title: %s\n score: %s\n", $result->uri, $result->title, $result->score); } # print stats printf(" hits: %d\n", $response->total); printf("search time: %s\n", $response->search_time); printf(" build time: %s\n", $response->build_time); printf(" query: %s\n", $response->query); -- Peter Karman . http://peknet.com/ . [email protected]
