1

基本的なヘブライ語のステミングを行いたいです。

私が見つけることができるカスタム アナライザーのすべての例は、常に他のアナライザーとフィルターをマージしますが、文字列レベルの処理自体は決して行いません。

たとえば、取得したストリーム内の用語ごとに、次のルールに従って 1 つまたは 2 つの用語を出力するアナライザーを作成したい場合、どうすればよいでしょうか。そのまま渡されます。着信用語が「a」で始まる場合、2 つの用語が発せられる必要があります。元の用語と、先頭の「a」がなく、ブーストが低い 2 番目の用語です。

そのため、ドキュメントに「help away」が含まれている場合、「help」、「away」、「way^0.8」が返されます。

これを行うには、アナライザーのどのメソッドをオーバーライドする必要がありますか? (同様の性質の例へのポインタは非常に役立ちます)。

ありがとう

4

1 に答える 1

1

一例を次に示します: http://www.java2s.com/Open-Source/Java-Document/Search-Engine/lucene/org/apache/lucene/wordnet/SynonymTokenFilter.java.htm

コードを簡単にスキャンすると、同じ位置 (同義語) で追加のトークンを発行する必要があるようです。これは、問題に対して行う必要がある incrementToken() をオーバーライドすることによって行われます (次のトークンのスタックを維持し、1 つずつ返す)。

この例が機能しない場合は、Lucene でシノニム フィルターを実装する方法を説明している例を探してみてください。問題とほとんど同じです。Lucene in Action book にはこの良い例があります。コードはhttp://www.manning.com/hatcher3/LIAsourcecode.zip、 class から入手できますSynonymFilter

于 2012-01-16T11:45:44.783 に答える