在Lucene.net搜索中使用特殊字符处理通配符搜索

时间:2012-05-14 08:13:29

标签: special-characters lucene.net wildcard

如何在lucene中执行通配符搜索包含特殊字符的单词。例如,我有一个像“ 91-95483534 ”的单词,如果我搜索“ 91 * ”它的工作原理,如果我搜索像“91-95483534”也工作正常。但我的Senario是搜索“ 91-9548 * ”。如果我这样表演“ 91-9548 * ”。我没有输出。我错过了什么。我的实际代码如下:

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

queryParser.SetAllowLeadingWildcard(true);

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

1 个答案:

答案 0 :(得分: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