0

我正在使用罗盘构建一些自动完成功能,我需要在罗盘查询中添加一个EdgeNGramTokenFilter,但我看不到如何添加它。

这可能吗?

4

1 回答 1

0

我设法通过创建一个提供程序类来添加过滤器,通过在标签 中添加以下行在文件中添加 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 {
    }

}
于 2009-07-29T14:19:10.773 回答