Lucy::Docs::Tutorial::FieldTypeTutorial - Specify per-field properties and behaviors.
The Schema we used in the last chapter specifies three fields:
my $type = Lucy::Plan::FullTextType->new( analyzer => $easyanalyzer, ); $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:
url
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.
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 = Lucy::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.
us_constitution
For a taste of other FieldType possibilities, try turning off stored for one or more fields.
stored
my $content_type = Lucy::Plan::FullTextType->new( analyzer => $easyanalyzer, 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.
title
content
Analyzers play a crucial role in the behavior of FullTextType fields. In our next tutorial chapter, AnalysisTutorial, we’ll see how changing up the Analyzer changes search results.
To install Lucy, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Lucy
CPAN shell
perl -MCPAN -e shell install Lucy
For more information on module installation, please visit the detailed CPAN module installation guide.