Class: Ferret::Index::FieldsWriter
- Inherits:
-
Object
- Object
- Ferret::Index::FieldsWriter
- Defined in:
- lib/ferret/index/fields_io.rb
Constant Summary collapse
- FIELD_IS_TOKENIZED =
0X1
- FIELD_IS_BINARY =
0X2
- FIELD_IS_COMPRESSED =
0X4
Instance Method Summary collapse
- #add_document(doc) ⇒ Object (also: #<<)
- #close ⇒ Object
-
#initialize(dir, segment, fi) ⇒ FieldsWriter
constructor
A new instance of FieldsWriter.
Constructor Details
#initialize(dir, segment, fi) ⇒ FieldsWriter
Returns a new instance of FieldsWriter.
109 110 111 112 113 |
# File 'lib/ferret/index/fields_io.rb', line 109 def initialize(dir, segment, fi) @field_infos = fi @fields_stream = dir.create_output(segment + ".fdt") @index_stream = dir.create_output(segment + ".fdx") end |
Instance Method Details
#add_document(doc) ⇒ Object Also known as: <<
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/ferret/index/fields_io.rb', line 120 def add_document(doc) @index_stream.write_long(@fields_stream.pos) stored_count = 0 doc.all_fields.each() { |field| stored_count += 1 if field.stored?() } @fields_stream.write_vint(stored_count) doc.all_fields.each() do |field| if (field.stored?()) @fields_stream.write_vint(@field_infos.field_number(field.name)) bits = 0 bits |= FIELD_IS_TOKENIZED if field.tokenized? bits |= FIELD_IS_BINARY if field.binary? bits |= FIELD_IS_COMPRESSED if field.compressed? @fields_stream.write_byte(bits) data = nil if field.compressed? if field.binary? data = compress(field.binary_value) else data = compress(field.string_value) end save_data(data) else if field.binary? save_data(field.binary_value) else @fields_stream.write_string(field.string_value) end end end end end |
#close ⇒ Object
115 116 117 118 |
# File 'lib/ferret/index/fields_io.rb', line 115 def close() @fields_stream.close() @index_stream.close() end |