First post!
[beagle.git] / Lucene.Net / Index / FieldsWriter.cs
blob1c95201f6e129f80b1e2fb2217fa810011cc8082
1 using System;
2 using System.Collections;
4 using Lucene.Net.Store;
5 using Lucene.Net.Documents;
7 namespace Lucene.Net.Index
9 /* ====================================================================
10 * The Apache Software License, Version 1.1
12 * Copyright (c) 2001 The Apache Software Foundation. All rights
13 * reserved.
15 * Redistribution and use in source and binary forms, with or without
16 * modification, are permitted provided that the following conditions
17 * are met:
19 * 1. Redistributions of source code must retain the above copyright
20 * notice, this list of conditions and the following disclaimer.
22 * 2. Redistributions in binary form must reproduce the above copyright
23 * notice, this list of conditions and the following disclaimer in
24 * the documentation and/or other materials provided with the
25 * distribution.
27 * 3. The end-user documentation included with the redistribution,
28 * if any, must include the following acknowledgment:
29 * "This product includes software developed by the
30 * Apache Software Foundation (http://www.apache.org/)."
31 * Alternately, this acknowledgment may appear in the software itself,
32 * if and wherever such third-party acknowledgments normally appear.
34 * 4. The names "Apache" and "Apache Software Foundation" and
35 * "Apache Lucene" must not be used to endorse or promote products
36 * derived from this software without prior written permission. For
37 * written permission, please contact apache@apache.org.
39 * 5. Products derived from this software may not be called "Apache",
40 * "Apache Lucene", nor may "Apache" appear in their name, without
41 * prior written permission of the Apache Software Foundation.
43 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
44 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
45 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
46 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
47 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
48 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
49 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
50 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
52 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
54 * SUCH DAMAGE.
55 * ====================================================================
57 * This software consists of voluntary contributions made by many
58 * individuals on behalf of the Apache Software Foundation. For more
59 * information on the Apache Software Foundation, please see
60 * <http://www.apache.org/>.
63 sealed class FieldsWriter
65 private FieldInfos fieldInfos;
66 private OutputStream fieldsStream;
67 private OutputStream indexStream;
69 internal FieldsWriter(Directory d, String segment, FieldInfos fn)
71 fieldInfos = fn;
72 fieldsStream = d.CreateFile(segment + ".fdt");
73 indexStream = d.CreateFile(segment + ".fdx");
76 internal void Close()
78 fieldsStream.Close();
79 indexStream.Close();
82 internal void AddDocument(Document doc)
84 indexStream.WriteLong(fieldsStream.GetFilePointer());
86 int storedCount = 0;
87 foreach (Field field in doc.Fields())
89 if (field.IsStored())
90 storedCount++;
92 fieldsStream.WriteVInt(storedCount);
94 foreach (Field field in doc.Fields())
96 if (field.IsStored())
98 fieldsStream.WriteVInt(fieldInfos.FieldNumber(field.Name()));
100 byte bits = 0;
101 if (field.IsTokenized())
102 bits |= 1;
103 fieldsStream.WriteByte(bits);
105 fieldsStream.WriteString(field.StringValue());