Как добавить EdgeNGramTokenFilter в запрос компаса? - PullRequest
0 голосов
/ 29 июля 2009

Я создаю некоторые функции автозаполнения, используя компас, и мне нужно добавить EdgeNGramTokenFilter к запросу компаса, но я не вижу, как его можно добавить.

Возможно ли это?

1 Ответ

0 голосов
/ 29 июля 2009

Мне удалось добавить фильтр 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 {
    }

}
...