-
-
27 Feb 2018 08:40:23 UTC
- Distribution: Lucy
- Module version: 0.006002
- Source (raw)
- Pod Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Clone repository
- Issues
- Testers (1251 / 3 / 7)
- Kwalitee
Bus factor: 1- License: apache_2_0
- Perl: v5.8.3
- Activity
24 month- Tools
- Download (1.12MB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
and 1 contributors- The Apache Lucy Project <dev at lucy dot apache dot org>
- Dependencies
- Clownfish
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
NAME
Lucy::Index::Segment - Warehouse for information about one segment of an inverted index.
SYNOPSIS
# Index-time. package MyDataWriter; use base qw( Lucy::Index::DataWriter ); sub finish { my $self = shift; my $segment = $self->get_segment; my $metadata = $self->SUPER::metadata(); $metadata->{foo} = $self->get_foo; $segment->store_metadata( key => 'my_component', metadata => $metadata ); } # Search-time. package MyDataReader; use base qw( Lucy::Index::DataReader ); sub new { my $self = shift->SUPER::new(@_); my $segment = $self->get_segment; my $metadata = $segment->fetch_metadata('my_component'); if ($metadata) { $self->set_foo( $metadata->{foo} ); ... } return $self; }
DESCRIPTION
Apache Lucy’s indexes are made up of individual “segments”, each of which is is an independent inverted index. On the file system, each segment is a directory within the main index directory whose name starts with “seg_”: “seg_2”, “seg_5a”, etc.
Each Segment object keeps track of information about an index segment: its fields, document count, and so on. The Segment object itself writes one file,
segmeta.json
; besides storing info needed by Segment itself, the “segmeta” file serves as a central repository for metadata generated by other index components – relieving them of the burden of storing metadata themselves.METHODS
add_field
my $int = $segment->add_field($field);
Register a new field and assign it a field number. If the field was already known, nothing happens.
field - Field name.
Returns: the field’s field number, which is a positive integer.
store_metadata
$segment->store_metadata( key => $key, # required metadata => $metadata, # required );
Store arbitrary information in the segment’s metadata hash, to be serialized later. Throws an error if
key
is used twice.key - String identifying an index component.
metadata - JSON-izable data structure.
fetch_metadata
my $obj = $segment->fetch_metadata($key);
Fetch a value from the Segment’s metadata hash.
field_num
my $int = $segment->field_num($field);
Given a field name, return its field number for this segment (which may differ from its number in other segments). Return 0 (an invalid field number) if the field name can’t be found.
field - Field name.
field_name
my $string = $segment->field_name($field_num);
Given a field number, return the name of its field, or undef if the field name can’t be found.
get_name
my $string = $segment->get_name();
Getter for the object’s seg name.
get_number
my $int = $segment->get_number();
Getter for the segment number.
set_count
$segment->set_count($count);
Setter for the object’s document count.
get_count
my $int = $segment->get_count();
Getter for the object’s document count.
compare_to
my $int = $segment->compare_to($other);
Compare by segment number.
INHERITANCE
Lucy::Index::Segment isa Clownfish::Obj.
Module Install Instructions
To install Lucy, copy and paste the appropriate command in to your terminal.
cpanm Lucy
perl -MCPAN -e shell install Lucy
For more information on module installation, please visit the detailed CPAN module installation guide.