Domanda

Sto sviluppando alcune funzionalità di completamento automatico usando compass e devo aggiungere un EdgeNGramTokenFilter alla query della bussola ma non riesco a vedere come posso aggiungerlo.

È possibile?

È stato utile?

Soluzione

Sono riuscito ad aggiungere il filtro EdgeNGramTokenFilter creando una classe provider aggiungendo un riferimento ad esso nel file compass.config.xml aggiungendo la seguente riga all'interno dei <searchEngine> tag

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

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

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top