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