2011-12-21 11 views
0

私はテキストを格納するための標準アナライザを使用していますだけでなくここでのLuceneが持つ単語の検索ではない「 - 」

を検索するための同じアナライザは、テキストを検索するためのコードです:

 Analyzer analyzer = GetAnalyzer(); 

     QueryParser parser = new QueryParser("Text", analyzer);   
     parser.SetAllowLeadingWildcard(true); 
     Query query;   

      query = parser.Parse(finalSearch); 

     Hits hits = searcher.Search(query); 

そして、ここでは、コードです私がどのように格納していますかテキスト:

fieldText = new Field("Text", text.ToLower(), Field.Store.YES, Field.Index.TOKENIZED);  

document.Add(fieldText); 
+0

問題を記載してください。多分例を挙げることができます。 –

答えて

0

'\'を使用して文字をエスケープしてみてください。 '-''\-'になります。

http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Escaping%20Special%20Characters

からのLuceneは、クエリ構文の一部である特殊文字をエスケープをサポートしています。現在のリスト特殊文字は、

です。これらの文字をエスケープするには、文字の前に\を使用します。たとえば、(1 + 1)を検索するには:2クエリを使用します。

\(1\+1\)\:2 
+0

私はQueryParser.Escape( "Hello-Break")を使用していて、 "Hello \ -Break"を返しますが、QueryParser.Parse( "Hello \ -Break")を実行すると、そのバックスラッシュが削除されます... – BreakHead

+0

プログラムに2番目の文を手動で入力しますか? QueryParser.Parseを試してください(@ "Hello \ -Break");文字列を渡すには? – rickythefox

+0

まだ結果が返っていない:( – BreakHead

関連する問題