NAME
Search::OpenSearch::Server::Catalyst - serve OpenSearch results with Catalyst
SYNOPSIS
package MyApp::Controller::API;
use strict;
use warnings;
use base 'Search::OpenSearch::Server::Catalyst';
use MyStats; # acts like a Dezi::Stats subclass
__PACKAGE__->config(
engine_config = {
type => 'Lucy',
index => ['path/to/your/index'],
facets => {
names => [qw( topics people places orgs author )],
sample_size => 10_000,
},
fields => [qw( topics people places orgs author )],
},
stats_logger => MyStats->new(),
);
1;
# now you can:
# GET /api/search
# POST /api/foo/bar
DESCRIPTION
Search::OpenSearch::Server::Catalyst is a Catalyst::Constroller subclass.
METHODS
This class inherits from Search::OpenSearch::Server and Catalyst::Controller. Only new or overridden methods are documented here.
new( params )
Inherits from Catalyst::Controller. params can be:
- engine
-
A Search::OpenSearch::Engine instance. Either this or engine_config is required.
- engine_config
-
A hashref passed to the Search::OpenSearch->engine method. Either this or engine is required.
- stats_logger
-
An object that implements at least one method called log. See Dezi::Stats for example.
default( ctx )
This method registers a URL action in the controller namespace.
The default() action passes the ctx and any other path args to process_request(). Override this method to control what your addressable URL(s) look like.
process_request( ctx, args )
Process the incoming request and create a response. The algorithm is, briefly:
GET -> do_search()
POST, PUT, DELETE -> do_rest_api()
args is an array joined with /
to create an actionable path. If that path is the string search
or is empty, then do_search() is triggered on GET requests. The path is ignored for all non-GET requests.
log( msg, level )
Passes msg on to the app $ctx->log method. level defaults to debug
and will only be passed to $ctx->log if $ctx->debug is true.
setup_engine
Instantiates the Search::OpenSearch::Engine, if necessary, using the values set in engine_config(). Called within new().
AUTHOR
Peter Karman, <karman at cpan.org>
BUGS
Please report any bugs or feature requests to bug-search-opensearch-server at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Search-OpenSearch-Server. 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 Search::OpenSearch::Server::Catalyst
You can also look for information at:
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Search-OpenSearch-Server
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
COPYRIGHT & LICENSE
Copyright 2012 Peter Karman.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.