xref: /OpenGrok/opengrok-indexer/src/main/java/org/opengrok/indexer/analysis/OGKTextField.java (revision 81b586e651d9f2a40ab5a985d2b7080ae732dd83)
1 /*
2  * This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
3  * United States License. To view a copy of this license, visit
4  * http://creativecommons.org/licenses/by-sa/3.0/us/ or send a letter to
5  * Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
6  *
7  * Copyright (c) 2012, https://stackoverflow.com/users/1270457/amas
8  * Copyright (c) 2012, https://stackoverflow.com/questions/11945728/how-to-use-termvector-lucene-4-0
9  * Portions Copyright (c) 2018, Chris Fraire <cfraire@me.com>.
10  */
11 
12 package org.opengrok.indexer.analysis;
13 
14 import java.io.Reader;
15 import org.apache.lucene.analysis.TokenStream;
16 import org.apache.lucene.document.Field;
17 import org.apache.lucene.document.FieldType;
18 import org.apache.lucene.index.IndexOptions;
19 
20 /**
21  * Represents an OpenGrok-customized tokenized text field to centralize settings
22  * across all the analyzers.
23  */
24 public class OGKTextField extends Field {
25 
26     /** Indexed, tokenized, not stored. */
27     public static final FieldType TYPE_NOT_STORED = new FieldType();
28 
29     /** Indexed, tokenized, stored. */
30     public static final FieldType TYPE_STORED = new FieldType();
31 
32     static {
33         TYPE_NOT_STORED.setIndexOptions(
34             IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS);
35         TYPE_NOT_STORED.setTokenized(true);
TYPE_NOT_STORED.freeze()36         TYPE_NOT_STORED.freeze();
37 
38         TYPE_STORED.setIndexOptions(
39             IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS);
40         TYPE_STORED.setTokenized(true);
41         TYPE_STORED.setStored(true);
TYPE_STORED.freeze()42         TYPE_STORED.freeze();
43     }
44 
45     /**
46      * Creates a new un-stored instance with {@link Reader} value.
47      * @param name field name
48      * @param reader reader
49      */
OGKTextField(String name, Reader reader)50     public OGKTextField(String name, Reader reader) {
51         super(name, reader, TYPE_NOT_STORED);
52     }
53 
54     /**
55      * Creates a new instance with {@link Reader} value.
56      * @param name field name
57      * @param reader reader
58      * @param store store
59      */
OGKTextField(String name, Reader reader, Store store)60     public OGKTextField(String name, Reader reader, Store store) {
61         super(name, reader, store == Store.YES ? TYPE_STORED : TYPE_NOT_STORED);
62     }
63 
64     /**
65      * Creates a new instance with {@code String} value.
66      * @param name field name
67      * @param value string value
68      * @param store store
69      */
OGKTextField(String name, String value, Store store)70     public OGKTextField(String name, String value, Store store) {
71         super(name, value, store == Store.YES ? TYPE_STORED : TYPE_NOT_STORED);
72     }
73 
74     /**
75      * Creates a new un-stored instance with {@link TokenStream} value.
76      * @param name field name
77      * @param stream stream
78      */
OGKTextField(String name, TokenStream stream)79     public OGKTextField(String name, TokenStream stream) {
80         super(name, stream, TYPE_NOT_STORED);
81     }
82 }
83