2011-01-19 12 views
1

私は検索のためにluceneを使用しています。私はタグを使って空白解析を使用しています。それは適切に格納されているように見えます。標準的なアナライザでは、私の 'C#'検索でC、C++の結果が得られます。私が試したすべてのアナライザ(私はhaventすべてを試しました)は、空白アナライザを除いてこれを行います。これは、私がC#を検索しても結果が得られない場合を除いて問題ありません(大文字の代わりに小文字のCを使用しています)。これは、 "Lucene insensitive white space analyzer?"のようなタイトルを検索すると面倒です。 「Lucene Insensitive Whitespace analyzer?」のようなときです。 (最初の3つの単語は上から始まり、最後は下から1つ上の検索と比較して最後のものではないことに注意してください)。Luceneに影響されない空白解析ツールですか?

どのようにしてホワイトスペースアナライザを非表示にするのですか?注:WhitespaceAnalyzerは封印されています。

答えて

5
+0

私はアナライザーを書こうとしました。チュートリアルを知っていますか?私は良いチュートリアルを見つけると、これを試してみます。私はこの問題を解決する時間が十分にある –

+0

あなたの記事を書く方法の詳細については、http://lucene.apache.org/java/3_0_0/api/core/org/apache/lucene/analysis/package-summary.htmlを参照してください。自分のアナライザ – bajafresh4life

+0

私はそれを理解できませんでした。私はすべてのテキストを大文字にして、私の検索機能でやり直してしまいます。これで完璧に動作します –

3

あなたは(例としてLuceneのバージョン4.10.4のために)以下のようにカスタムアナライザを作成することができます

import java.io.Reader; 
import org.apache.lucene.analysis.Analyzer; 
import org.apache.lucene.analysis.TokenStream; 
import org.apache.lucene.analysis.Tokenizer; 
import org.apache.lucene.analysis.core.LowerCaseFilter; 
import org.apache.lucene.analysis.core.WhitespaceTokenizer; 

public class CaseInsensitiveWhitespaceAnalyzer extends Analyzer { 
    @Override 
    protected TokenStreamComponents createComponents(String arg0, Reader arg1) { 
      Tokenizer tokenizer = new WhitespaceTokenizer(arg1); 
      TokenStream filter = new LowerCaseFilter(tokenizer); 
      return new TokenStreamComponents(tokenizer, filter); 
    } 
} 

インデックス作成時には、アナライザーを使用してインデックスライターを設定し、それを使用して検索時にクエリパーサー。

関連する問題