首页->FAQ->显示文章

Google
 

Lucene支持什么样的通配符查询?

译自:http://wiki.apache.org/lucene-java/LuceneFAQ#What_wildcard_search_support_is_available_from_Lucene.3F

Lucene支持形如“book*”的通配符查询,这个查询可以找到包含book,bookstore,booklet等词的文档。Lucene把这种类型的查询叫做“前缀查询(prefix query)”。

Lucene还支持在查询词中部添加通配符的查询。例如,你可以创建一个搜索形如:mi*pelling。它将匹配如misspelling,这次词的正确拼写形式,如mispelling,这个词常见的错误拼写形式。

另外一个通配字符你可以使用“?”。它匹配单个字符。这个允许你执行形如 Bra?il 的查询。这样的查询将匹配Brasil和Brazil。Lucene把这类查询叫做“通配符查询(wildcard query)”。

默认情况下,QueryParser不支持通配符打头的查询(如,*ook)。不过在Lucene 2.1版本以后,他们可以通过调用QueryParser.setAllowLeadingWildcard( true )的方法打开这一功能。注意,这是一个开销很大的操作:它需要扫描索引中全部记号的列表,来寻找匹配这个模式的词。(译注:高效支持这种后缀查询的办法是,建立反序的记号表,Lucene没有实现这一模式。)

所属分类: [lucene] [Java]
tag: 前缀查询, 通配符,

tinyfool发布于2009年10月14日 16:58