【问题标题】:How do I add an EdgeNGramTokenFilter to a Compass Query?如何将 EdgeNGramTokenFilter 添加到 Compass 查询?
【发布时间】:2009-07-29 14:00:23
【问题描述】:

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

这可能吗?

【问题讨论】:

    标签: lucene compass-lucene


    【解决方案1】:

    我设法通过在compass.config.xml 文件中添加对compass.config.xml 文件的引用创建提供程序类来添加EdgeNGramTokenFilter 过滤器,方法是在<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 {
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-20
      • 2023-04-03
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多