0

特殊文字を含む lucene の単語をワイルドカード検索する方法を教えてください。たとえば、「91-95483534」のような単語があり、「91*」のように検索すると機能し、「91-95483534」のように検索すると正常に機能します。しかし、私のシナリオは、「91-9548*」を検索することです。この「 91-9548* 」のように実行すると。出力がありません。私は何かが欠けていますか。私の実際のコードを以下に示します。

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

queryParser.SetAllowLeadingWildcard(true);

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

1 に答える 1

1

StandardAnalyzerを使用したため、インデックス作成時にINDEX_ANALYZEDを使用した場合は91および95483534としてインデックス付けされました。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

于 2012-05-24T07:10:32.310 に答える