⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fieldswriter.pm

📁 Plucene-1.25.tar.gz PERL版本的lucene
💻 PM
字号:
package Plucene::Index::FieldsWriter;=head1 NAME Plucene::Index::FieldsWriter - writes Fields to a Document=head1 SYNOPSIS	my $writer = Plucene::Index::FieldsWriter->new(		$dir_name, $segment, $field_infos);	$writer->add_document(Plucene::Document $doc);=head1 DESCRIPTIONThis class add documents to the appropriate files.=head1 METHODS=cutuse strict;use warnings;use Plucene::Store::OutputStream;use Plucene::Index::FieldInfos;=head2 new	my $writer = Plucene::Index::FieldsWriter->new(		$dir_name, $segment, $field_infos);This will create a new Plucene::Index::FieldsWriter object with the passeddirectory name, segment and field infos.		=cut# private FieldInfos fieldInfos;# private OutputStream fieldsStream;# private OutputStream indexStream;# FieldsWriter(Directory d, String segment, FieldInfos fn)#      throws IOException {#   fieldInfos = fn;#   fieldsStream = d.createFile(segment + ".fdt");#   indexStream = d.createFile(segment + ".fdx");# }sub new {	my ($self, $d, $segment, $fn) = @_;	bless {		field_infos   => $fn,		segment       => $segment,		fields_stream => Plucene::Store::OutputStream->new("$d/$segment.fdt"),		index_stream  => Plucene::Store::OutputStream->new("$d/$segment.fdx"),	}, $self;}=head2 close	$writer->close;=cut# final void close() throws IOException {#   fieldsStream.close();#   indexStream.close();# }sub close {	my $self = shift;	$self->{fields_stream}->close;	$self->{index_stream}->close;}=head2 add_document	$writer->add_document(Plucene::Document $doc);This will add the passed Plucene::Document.=cut# final void addDocument(Document doc) throws IOException {#   indexStream.writeLong(fieldsStream.getFilePointer());##   int storedCount = 0;#   Enumeration fields  = doc.fields();#   while (fields.hasMoreElements()) {#     Field field = (Field)fields.nextElement();#     if (field.isStored())#       storedCount++;#   }#   fieldsStream.writeVInt(storedCount);##   fields  = doc.fields();#   while (fields.hasMoreElements()) {#     Field field = (Field)fields.nextElement();#     if (field.isStored()) {#       fieldsStream.writeVInt(fieldInfos.fieldNumber(field.name()));##       byte bits = 0;#       if (field.isTokenized())#         bits |= 1;#       fieldsStream.writeByte(bits);##       fieldsStream.writeString(field.stringValue());#     }#   }# }sub add_document {	my ($self, $doc) = @_;	$self->{index_stream}->write_long($self->{fields_stream}->tell);	my @stored = grep $_->is_stored, $doc->fields;	$self->{fields_stream}->write_vint(scalar @stored);	for my $field (@stored) {		$self->{fields_stream}			->write_vint($self->{field_infos}->field_number($field->name));		$self->{fields_stream}->print(chr($field->is_tokenized));		$self->{fields_stream}->write_string($field->string);	}}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -