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