Pergunta

Estou construindo algumas funcionalidades de auto-completar usando bússola e eu preciso adicionar um EdgeNGramTokenFilter para a consulta bússola, mas não posso ver como eu pode adicioná-lo.

Isso é possível?

Foi útil?

Solução

Eu consegui adicionar o filtro EdgeNGramTokenFilter criando uma classe de provedor de adicionar uma referência a ele no arquivo compass.config.xml adicionando a seguinte linha dentro do <searchEngine> etiquetas

<analyzerFilter name="lower" type="EdgeNGramTokenFilterProvider"/>

Aqui é a classe:

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 {
    }

}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top