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