2012-05-14 17 views
0

ワイルドカード検索では、特殊文字を含む単語をluceneで検索する方法を教えてください。たとえば、 "91-95483534"のように "91 *"のように検索すると "91-95483534"のように検索しても問題ありません。私のシナリオは、 "91-9548 *"を検索することです。私がこのような "91-9548 *"のように実行する場合。私は出力がありません。私は何かが欠けている。私の実際のコードは以下の通りです:Lucene.net検索で特殊文字を使用したワイルドカード検索の処理

MultiFieldQueryParser queryParser = new MultiFieldQueryParser(new string[] {"column1","column2"}, new StandardAnalyzer()); 

queryParser.SetAllowLeadingWildcard(true); 

Query query = queryParser.Parse(QueryParser.Escape(strKeyWord) + "*"); 

答えて

1

あなたがINDEX_ANALYZEDを使用する場合は95483534を91として、あなたの言葉をインデックス化し、StandardAnalyzerを、使用されるようにするときに、インデックス.... あなたは91から9548 *として検索したい場合は、指定されたフィールドに "91-95483534"という用語をインデックスとして使用する場合はINDEX_NOT_ANALYZEDを使用してください。

http://lucene.apache.org/core/old_versioned_docs/versions/3_0_3/api/core/org/apache/lucene/document/Field.Index.html

関連する問題