.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Lucy::Index::DataWriter 3pm" .TH Lucy::Index::DataWriter 3pm "2015-03-06" "perl v5.20.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Lucy::Index::DataWriter \- Write data to an index. .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& # Abstract base class. .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" DataWriter is an abstract base class for writing index data, generally in segment-sized chunks. Each component of an index \*(-- e.g. stored fields, lexicon, postings, deletions \*(-- is represented by a DataWriter/DataReader pair. .PP Components may be specified per index by subclassing Architecture. .SH "CONSTRUCTORS" .IX Header "CONSTRUCTORS" .SS "new( \fI[labeled params]\fP )" .IX Subsection "new( [labeled params] )" .Vb 5 \& my $writer = MyDataWriter\->new( \& snapshot => $snapshot, # required \& segment => $segment, # required \& polyreader => $polyreader, # required \& ); .Ve .IP "\(bu" 4 \&\fBsnapshot\fR \- The Snapshot that will be committed at the end of the indexing session. .IP "\(bu" 4 \&\fBsegment\fR \- The Segment in progress. .IP "\(bu" 4 \&\fBpolyreader\fR \- A PolyReader representing all existing data in the index. (If the index is brand new, the PolyReader will have no sub-readers). .SH "ABSTRACT METHODS" .IX Header "ABSTRACT METHODS" .SS "add_inverted_doc( \fI[labeled params]\fP )" .IX Subsection "add_inverted_doc( [labeled params] )" Process a document, previously inverted by \f(CW\*(C`inverter\*(C'\fR. .IP "\(bu" 4 \&\fBinverter\fR \- An Inverter wrapping an inverted document. .IP "\(bu" 4 \&\fBdoc_id\fR \- Internal number assigned to this document within the segment. .SS "add_segment( \fI[labeled params]\fP )" .IX Subsection "add_segment( [labeled params] )" Add content from an existing segment into the one currently being written. .IP "\(bu" 4 \&\fBreader\fR \- The SegReader containing content to add. .IP "\(bu" 4 \&\fBdoc_map\fR \- An array of integers mapping old document ids to new. Deleted documents are mapped to 0, indicating that they should be skipped. .SS "\fIfinish()\fP" .IX Subsection "finish()" Complete the segment: close all streams, store metadata, etc. .SS "\fIformat()\fP" .IX Subsection "format()" Every writer must specify a file format revision number, which should increment each time the format changes. Responsibility for revision checking is left to the companion DataReader. .SH "METHODS" .IX Header "METHODS" .SS "delete_segment(reader)" .IX Subsection "delete_segment(reader)" Remove a segment's data. The default implementation is a no-op, as all files within the segment directory will be automatically deleted. Subclasses which manage their own files outside of the segment system should override this method and use it as a trigger for cleaning up obsolete data. .IP "\(bu" 4 \&\fBreader\fR \- The SegReader containing content to merge, which must represent a segment which is part of the the current snapshot. .SS "merge_segment( \fI[labeled params]\fP )" .IX Subsection "merge_segment( [labeled params] )" Move content from an existing segment into the one currently being written. .PP The default implementation calls \fIadd_segment()\fR then \fIdelete_segment()\fR. .IP "\(bu" 4 \&\fBreader\fR \- The SegReader containing content to merge, which must represent a segment which is part of the the current snapshot. .IP "\(bu" 4 \&\fBdoc_map\fR \- An array of integers mapping old document ids to new. Deleted documents are mapped to 0, indicating that they should be skipped. .SS "\fImetadata()\fP" .IX Subsection "metadata()" Arbitrary metadata to be serialized and stored by the Segment. The default implementation supplies a Hash with a single key-value pair for \&\*(L"format\*(R". .SS "\fIget_snapshot()\fP" .IX Subsection "get_snapshot()" Accessor for \*(L"snapshot\*(R" member var. .SS "\fIget_segment()\fP" .IX Subsection "get_segment()" Accessor for \*(L"segment\*(R" member var. .SS "\fIget_polyreader()\fP" .IX Subsection "get_polyreader()" Accessor for \*(L"polyreader\*(R" member var. .SS "\fIget_schema()\fP" .IX Subsection "get_schema()" Accessor for \*(L"schema\*(R" member var. .SS "\fIget_folder()\fP" .IX Subsection "get_folder()" Accessor for \*(L"folder\*(R" member var. .SH "INHERITANCE" .IX Header "INHERITANCE" Lucy::Index::DataWriter isa Lucy::Object::Obj.