NAME

Dancer::SearchApp::IndexSchema - schema definition for the Elasticsearch index

Consider maybe extending this so different items (like Tweets, RSS) have different fields instead of mushing all metadata into the same schema

Boost direct matches, still allow synonyms

PUT /<index_name>/<type_name>/_mapping { "<type>": { "properties": { "title": { "type": "string", "fields": { "exact": { "type": "string", "index": "not_analyzed" }, "synonym": { "type": "string", "index": "analyzed", "analyzer": "synonym_analyzer" }, "stemmed": { "type": "string", "index": "analyzed", "analyzer": "stemming_analyzer" } } } } } }

And the following query should match as you wish :

POST /<index_name>/<type_name>/_search { "query": { "multi_match": { "query": "injury", "fields": [ "title.exact^3", "title.synonym^2", "title.stemmed" ] } } }

create_mapping

Defines a Dancer::SearchApp index. This is currently the following specification:

        "properties" => {
            "url"        => { type => "text" }, # file://-URL
            "title"      => multilang_text('title',$analyzer),
            "author"     => multilang_text('author', $analyzer),
            "content"    => multilang_text('content',$analyzer),
            'mime_type'  => { type => "string" }, # text/html etc.
            "creation_date"    => {
              "type"  =>  "date",
              "format" => "yyyy-MM-dd HH:mm:ss",
            },
        },

find_or_create_index

  my $found = find_or_create_index( $es, $index_name, $lang, $type );
  $found->then( sub {
      my( $name ) = @_;
      print "Using index '$name'\n";
  });

Returns the full name for the index $index_name, concatenated with the language. The language is important to chose the correct stemmer. Existing indices will be cached in the package global variable %indices.

REPOSITORY

The public repository of this module is https://github.com/Corion/dancer-searchapp.

SUPPORT

The public support forum of this module is https://perlmonks.org/.

TALKS

I've given a talk about this module at Perl conferences:

German Perl Workshop 2016, German

BUG TRACKER

Please report bugs in this module via the RT CPAN bug queue at https://rt.cpan.org/Public/Dist/Display.html?Name=Dancer-SearchApp or via mail to dancer-searchapp-Bugs@rt.cpan.org.

AUTHOR

Max Maischein corion@cpan.org

COPYRIGHT (c)

Copyright 2014-2016 by Max Maischein corion@cpan.org.

LICENSE

This module is released under the same terms as Perl itself.