Question

Je suis en train de créer une fonctionnalité de saisie automatique à l’aide de la boussole et j’ai besoin d’ajouter un EdgeNGramTokenFilter à la requête Compas, mais je ne vois pas comment je pourrais l’ajouter.

Est-ce possible?

Était-ce utile?

La solution

J'ai réussi à ajouter le filtre EdgeNGramTokenFilter en créant une classe de fournisseur en y ajoutant une référence dans le fichier compass.config.xml en ajoutant la ligne suivante dans les balises <searchEngine>

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

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

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top