原来lucene支持后缀匹配!QueryParser.setAllowLeadingWildcard( true )

Lucene supports wild card queries which allow you to perform searches such as book* , which will find documents containing terms such as book , bookstore , booklet , etc. Lucene refers to this type of a query as a 'prefix query'.

Lucene also supports wild card queries which allow you to place a wild card in the middle of the query term. For instance, you could make searches like: mi*pelling . That will match both misspelling , which is the correct way to spell this word, as well as mispelling , which is a common spelling mistake.

Another wild card character that you can use is '?', a question mark. The ? will match a single character. This allows you to perform queries such as Bra?il . Such a query will match both Brasil and Brazil . Lucene refers to this type of a query as a 'wildcard query'.

Leading wildcards (e.g. *ook ) are not supported by the QueryParser by default. As of Lucene 2.1, they can be enabled by calling QueryParser.setAllowLeadingWildcard( true ) . Note that this can be an expensive operation: it requires scanning the list of tokens in the index in its entirety to look for those that match the pattern.

 

 

今天在调试bug的时候,在网上无意发现lucene支持后缀匹配,不过这是个费时的动作。

以前客户需要类似的功能,没有去实现,罪过!!!

 

 

 

 

 

 

 

 

你可能感兴趣的:(Lucene,query,character,wildcard)