Thumbnail file hits. Based on a patch from D Bera
[beagle.git] / beagled / Lucene.Net / Index / FieldsWriter.cs
blob7f9e1fe9ef73d6152454d64a651a5d9d386b968c
1 /*
2 * Copyright 2004 The Apache Software Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 using System;
17 using Document = Lucene.Net.Documents.Document;
18 using Field = Lucene.Net.Documents.Field;
19 using Directory = Lucene.Net.Store.Directory;
20 using OutputStream = Lucene.Net.Store.OutputStream;
21 namespace Lucene.Net.Index
24 sealed class FieldsWriter
26 private FieldInfos fieldInfos;
27 private OutputStream fieldsStream;
28 private OutputStream indexStream;
30 internal FieldsWriter(Directory d, System.String segment, FieldInfos fn)
32 fieldInfos = fn;
33 fieldsStream = d.CreateFile(segment + ".fdt");
34 indexStream = d.CreateFile(segment + ".fdx");
37 internal void Close()
39 fieldsStream.Close();
40 indexStream.Close();
43 internal void AddDocument(Document doc)
45 indexStream.WriteLong(fieldsStream.GetFilePointer());
47 int storedCount = 0;
48 foreach (Field field in doc.Fields())
50 if (field.IsStored())
51 storedCount++;
53 fieldsStream.WriteVInt(storedCount);
55 foreach (Field field in doc.Fields())
57 if (field.IsStored())
59 fieldsStream.WriteVInt(fieldInfos.FieldNumber(field.Name()));
61 byte bits = 0;
62 if (field.IsTokenized())
63 bits |= 1;
64 fieldsStream.WriteByte(bits);
66 fieldsStream.WriteString(field.StringValue());