1b5840353SAdam Hornáček /* 2b5840353SAdam Hornáček * CDDL HEADER START 3b5840353SAdam Hornáček * 4b5840353SAdam Hornáček * The contents of this file are subject to the terms of the 5b5840353SAdam Hornáček * Common Development and Distribution License (the "License"). 6b5840353SAdam Hornáček * You may not use this file except in compliance with the License. 7b5840353SAdam Hornáček * 8b5840353SAdam Hornáček * See LICENSE.txt included in this distribution for the specific 9b5840353SAdam Hornáček * language governing permissions and limitations under the License. 10b5840353SAdam Hornáček * 11b5840353SAdam Hornáček * When distributing Covered Code, include this CDDL HEADER in each 12b5840353SAdam Hornáček * file and include the License file at LICENSE.txt. 13b5840353SAdam Hornáček * If applicable, add the following below this CDDL HEADER, with the 14b5840353SAdam Hornáček * fields enclosed by brackets "[]" replaced with your own identifying 15b5840353SAdam Hornáček * information: Portions Copyright [yyyy] [name of copyright owner] 16b5840353SAdam Hornáček * 17b5840353SAdam Hornáček * CDDL HEADER END 18b5840353SAdam Hornáček */ 19b5840353SAdam Hornáček 20b5840353SAdam Hornáček /* 21b5840353SAdam Hornáček * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. 22*2173ed7bSChris Fraire * Portions Copyright (c) 2017, 2020, Chris Fraire <cfraire@me.com>. 23b5840353SAdam Hornáček */ 249805b761SAdam Hornáček package org.opengrok.indexer.analysis; 25b5840353SAdam Hornáček 26b5840353SAdam Hornáček import org.apache.lucene.analysis.Analyzer; 27b5840353SAdam Hornáček import org.apache.lucene.analysis.LowerCaseFilter; 28b5840353SAdam Hornáček import org.apache.lucene.analysis.TokenStream; 299805b761SAdam Hornáček import org.opengrok.indexer.analysis.plain.PlainFullTokenizer; 309805b761SAdam Hornáček import org.opengrok.indexer.analysis.plain.PlainSymbolTokenizer; 319805b761SAdam Hornáček import org.opengrok.indexer.search.QueryBuilder; 32b5840353SAdam Hornáček 33b5840353SAdam Hornáček public class CompatibleAnalyser extends Analyzer { 34b5840353SAdam Hornáček CompatibleAnalyser()35b5840353SAdam Hornáček public CompatibleAnalyser() { 36b5840353SAdam Hornáček super(Analyzer.PER_FIELD_REUSE_STRATEGY); 37b5840353SAdam Hornáček } 38b5840353SAdam Hornáček 39b5840353SAdam Hornáček @Override createComponents(String fieldName)40b5840353SAdam Hornáček protected TokenStreamComponents createComponents(String fieldName) { 41b5840353SAdam Hornáček switch (fieldName) { 42b5840353SAdam Hornáček case QueryBuilder.FULL: 43b5840353SAdam Hornáček return new TokenStreamComponents(createPlainFullTokenizer()); 44b5840353SAdam Hornáček case QueryBuilder.REFS: 45b5840353SAdam Hornáček return new TokenStreamComponents(createPlainSymbolTokenizer()); 46b5840353SAdam Hornáček case QueryBuilder.DEFS: 47b5840353SAdam Hornáček return new TokenStreamComponents(createPlainSymbolTokenizer()); 48b5840353SAdam Hornáček case QueryBuilder.PATH: 49b5840353SAdam Hornáček case QueryBuilder.PROJECT: 50b5840353SAdam Hornáček return new TokenStreamComponents(new PathTokenizer()); 51b5840353SAdam Hornáček case QueryBuilder.HIST: 52*2173ed7bSChris Fraire try (HistoryAnalyzer historyAnalyzer = new HistoryAnalyzer()) { 53*2173ed7bSChris Fraire return historyAnalyzer.createComponents(fieldName); 54*2173ed7bSChris Fraire } 55b5840353SAdam Hornáček default: 56b5840353SAdam Hornáček return new TokenStreamComponents(createPlainFullTokenizer()); 57b5840353SAdam Hornáček } 58b5840353SAdam Hornáček } 59b5840353SAdam Hornáček createPlainSymbolTokenizer()60b5840353SAdam Hornáček private JFlexTokenizer createPlainSymbolTokenizer() { 61b5840353SAdam Hornáček return new JFlexTokenizer(new PlainSymbolTokenizer( 6257eefa47SKryštof Tulinger AbstractAnalyzer.DUMMY_READER)); 63b5840353SAdam Hornáček } 64b5840353SAdam Hornáček createPlainFullTokenizer()65b5840353SAdam Hornáček private JFlexTokenizer createPlainFullTokenizer() { 66b5840353SAdam Hornáček return new JFlexTokenizer(new PlainFullTokenizer( 6757eefa47SKryštof Tulinger AbstractAnalyzer.DUMMY_READER)); 68b5840353SAdam Hornáček } 69b5840353SAdam Hornáček 70b5840353SAdam Hornáček @Override normalize(String fieldName, TokenStream in)71b5840353SAdam Hornáček protected TokenStream normalize(String fieldName, TokenStream in) { 72b5840353SAdam Hornáček switch (fieldName) { 73b5840353SAdam Hornáček case QueryBuilder.DEFS: 74b5840353SAdam Hornáček case QueryBuilder.REFS: 75b5840353SAdam Hornáček return in; 76b5840353SAdam Hornáček default: 77b5840353SAdam Hornáček return new LowerCaseFilter(in); 78b5840353SAdam Hornáček } 79b5840353SAdam Hornáček } 80b5840353SAdam Hornáček } 81