Lucene5学习之WildcardQuery使用

简介:

     WildcardQuery即通配符查询,即使用通配符来模糊查询,常见的通配符有?,*,-等等,通配符不知道怎么使用的自己Google学习下吧。照例还是先阅读官方的API文档:


 特别要注意的Note后面的话,提醒我们注意,WildcardQuery查询是很慢的,因为它需要遍历很多的Term,为了避免极慢的查询速度,请不要使用以星号开头的通配符进行查询。

   除了官方给的那点提醒以外,我也要提醒大家一点,WildcardQuery对于用户输入的查询关键字是大小写敏感的,请不要使用大写形式,因为索引中的Term都是小写形式的,这个大家都知道的,特此提醒。

WildcardQuery构造函数除了需要一个Term对象以外,还有一个参数需要设置maxDeterminizedStates,源码注释里是这样解释的:

    

Java代码   收藏代码
  1. /** 
  2.    * Constructs a query for terms matching <code>term</code>. 
  3.    * @param maxDeterminizedStates maximum number of states in the resulting 
  4.    *   automata.  If the automata would need more than this many states 
  5.    *   TooComplextToDeterminizeException is thrown.  Higher number require more 
  6.    *   space but can process more complex automata. 
  7.    */  
  8.   public WildcardQuery(Term term, int maxDeterminizedStates) {  
  9.     super(term, toAutomaton(term), maxDeterminizedStates);  
  10.   }  

 其实就是设置根据通配符支持最大能支持有多少Term情况,Term越多占的硬盘空间越大,但查询也更精确。这个值默认源码里给定的是10000,默认即可。

其他也没什么好说的,WildcardQuery使用难度也不大,照样贴一个使用示例吧:

Java代码   收藏代码
  1. String directoryPath = "D:/lucenedir";  
  2. String fieldName = "contents";  
  3. String queryString = "*recursive*";   
  4.           
  5. Query query = new WildcardQuery(new Term(fieldName,queryString));  

 示例代码的意图就是查询索引文档中包含recursive这个单词的,OK,打完收工了,此时此刻2015-03-24 22:26,该睡觉了。预计接下来要说说的就是SpanQuery了。

 

如果你还有什么问题请加我Q-Q:7-3-6-0-3-1-3-0-5,

或者加裙
一起交流学习!

转载:http://iamyida.iteye.com/blog/2195249

目录
相关文章
|
存储 自然语言处理 算法
Lucene学习总结
Lucene学习总结
75 0
Lucene学习总结
|
分布式计算 算法 Hadoop
什么是 lucene|学习笔记
快速学习 什么是 lucene
65 0
什么是 lucene|学习笔记
|
关系型数据库 MySQL 数据库
为什么要使用 Lucene|学习笔记
快速学习为什么要使用 Lucene
119 0
为什么要使用 Lucene|学习笔记
|
存储 Apache 索引
Lucene就是这么简单(二)
Lucene是apache软件基金会发布的一个开放源代码的全文检索引擎工具包,由资深全文检索专家Doug Cutting所撰写,它是一个全文检索引擎的架构,提供了完整的创建索引和查询索引,以及部分文本分析的引擎,Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎,Lucene在全文检索领域是一个经典的祖先,现在很多检索引擎都是在其基础上创建的,思想是相通的。
103 0
Lucene就是这么简单(二)
|
SQL 数据采集 自然语言处理
Lucene就是这么简单(一)
Lucene是apache软件基金会发布的一个开放源代码的全文检索引擎工具包,由资深全文检索专家Doug Cutting所撰写,它是一个全文检索引擎的架构,提供了完整的创建索引和查询索引,以及部分文本分析的引擎,Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎,Lucene在全文检索领域是一个经典的祖先,现在很多检索引擎都是在其基础上创建的,思想是相通的。
133 0
Lucene就是这么简单(一)
|
索引
lucene学习笔记
lucene学习笔记
122 0
|
开发框架 Java Apache
Lucene|学习笔记
快速学习 Lucene
|
Java 索引 自然语言处理
|
分布式计算 自然语言处理 Hadoop