EdgeNGramTokenFilterをコンパスクエリに追加するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1200474

  •  05-07-2019
  •  | 
  •  

質問

コンパスを使用してオートコンプリート機能を構築しています。コンパスクエリに EdgeNGramTokenFilter を追加する必要がありますが、追加方法がわかりません。

これは可能ですか?

役に立ちましたか?

解決

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

}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top