Como faço para adicionar um EdgeNGramTokenFilter a uma consulta Compass?
-
05-07-2019 - |
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?
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