2 * Copyright 2004 The Apache Software Foundation
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
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
)
33 fieldsStream
= d
.CreateFile(segment
+ ".fdt");
34 indexStream
= d
.CreateFile(segment
+ ".fdx");
43 internal void AddDocument(Document doc
)
45 indexStream
.WriteLong(fieldsStream
.GetFilePointer());
48 foreach (Field field
in doc
.Fields())
53 fieldsStream
.WriteVInt(storedCount
);
55 foreach (Field field
in doc
.Fields())
59 fieldsStream
.WriteVInt(fieldInfos
.FieldNumber(field
.Name()));
62 if (field
.IsTokenized())
64 fieldsStream
.WriteByte(bits
);
66 fieldsStream
.WriteString(field
.StringValue());