The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

KinoSearch::Docs::Tutorial::FieldType - Specify per-field properties and behaviors.

DEPRECATED

The KinoSearch code base has been assimilated by the Apache Lucy project. The "KinoSearch" namespace has been deprecated, but development continues under our new name at our new home: http://lucy.apache.org/

DESCRIPTION

The Schema we used in the last chapter specifies three fields:

    my $type = KinoSearch::Plan::FullTextType->new(
        analyzer => $polyanalyzer,
    );
    $schema->spec_field( name => 'title',   type => $type );
    $schema->spec_field( name => 'content', type => $type );
    $schema->spec_field( name => 'url',     type => $type );

Since they are all defined as "full text" fields, they are all searchable -- including the url field, a dubious choice. Some URLs contain meaningful information, but these don't, really:

    http://example.com/us_constitution/amend1.txt

We may as well not bother indexing the URL content. To achieve that we need to assign the url field to a different FieldType.

StringType

Instead of FullTextType, we'll use a StringType, which doesn't use an Analyzer to break up text into individual fields. Furthermore, we'll mark this StringType as unindexed, so that its content won't be searchable at all.

    my $url_type = KinoSearch::Plan::StringType->new( indexed => 0 );
    $schema->spec_field( name => 'url', type => $url_type );

To observe the change in behavior, try searching for us_constitution both before and after changing the Schema and re-indexing.

Toggling 'stored'

For a taste of other FieldType possibilities, try turning off stored for one or more fields.

    my $content_type = KinoSearch::Plan::FullTextType->new(
        analyzer => $polyanalyzer,
        stored   => 0,
    );

Turning off stored for either title or url mangles our results page, but since we're not displaying content, turning it off for content has no effect -- except on index size.

Analyzers up next

Analyzers play a crucial role in the behavior of FullTextType fields. In our next tutorial chapter, KinoSearch::Docs::Tutorial::Analysis, we'll see how changing up the Analyzer changes search results.

COPYRIGHT AND LICENSE

Copyright 2008-2011 Marvin Humphrey

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.