Как добавить EdgeNGramTokenFilter в запрос компаса?
-
05-07-2019 - |
Вопрос
Я создаю некоторые функции автозаполнения, используя компас, и мне нужно добавить EdgeNGramTokenFilter в запрос компаса, но я не вижу, как его можно добавить.
Возможно ли это?
Решение
Мне удалось добавить фильтр EdgeNGramTokenFilter
, создав класс провайдера, добавив ссылку на него в файл compass.config.xml
, добавив следующую строку в тегах <searchEngine>
<analyzerFilter name="lower" type="EdgeNGramTokenFilterProvider"/>
Вот класс:
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.ngram.EdgeNGramTokenFilter;
import org.apache.lucene.analysis.ngram.EdgeNGramTokenFilter.Side;
import org.compass.core.CompassException;
import org.compass.core.config.CompassSettings;
import org.compass.core.lucene.engine.analyzer.LuceneAnalyzerTokenFilterProvider;
public class EdgeNGramTokenFilterProvider implements LuceneAnalyzerTokenFilterProvider {
public TokenStream createTokenFilter(TokenStream tokenStream) {
return new EdgeNGramTokenFilter(tokenStream, Side.FRONT, 1, 20);
}
public void configure(CompassSettings settings) throws CompassException {
}
}
Не связан с StackOverflow