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