lucene5专题

Lucene5学习之SpanQuery跨度查询

SpanQuery下的子类有好几个,我就放一篇里集中说说。SpanQuery即跨度查询,首先要理解跨度这个概念,Lucene里跨度是用Spans这个类定义的,源码如下:   /** Expert: an enumeration of span matches. Used to implement span searching.* Each span represents a range

Lucene5学习之WildcardQuery使用

WildcardQuery即通配符查询,即使用通配符来模糊查询,常见的通配符有?,*,-等等,通配符不知道怎么使用的自己Google学习下吧。照例还是先阅读官方的API文档:  特别要注意的Note后面的话,提醒我们注意,WildcardQuery查询是很慢的,因为它需要遍历很多的Term,为了避免极慢的查询速度,请不要使用以星号开头的通配符进行查询。    除了官方给的那点提醒以外,

Lucene5学习之PrefixQuery使用

继续学习Query系列的实现类,PrefixQuery即前缀查询,类似于数据库SQL里的like 'java%',查询以指定前缀字符串打头的索引文档。官方API是这样解释的:  意思是这个Query是用包含指定前缀的Terms来匹配索引文档的,PrefixQuery是QueryParser根据用户的输入构建的。      这个Query很简单,没什么多说的,直接上使用示例:  Stri

Lucene5学习之NumericRangeQuery使用

说到NumericRangeQuery查询,你们肯定觉得很简单,不就是数字范围查询吗?用户提供一个上限值和一个下限值,底层API里直接>min,<max,真的是这样吗?其实在Lucene里只能对字符串String建立索引,那么数字怎么转成String,你肯定又会想当然的认为toString()一下就OK啦?OK,假如真的是这样的,那字符串"3" > "26"问题怎么解决?OK,可以通过在

Lucene5学习之TermRangeQuery使用

TermRangeQuery是用于字符串范围查询的,既然涉及到范围必然需要字符串比较大小,字符串比较大小其实比较的是ASC码值,即ASC码范围查询。一般对于英文来说,进行ASC码范围查询还有那么一点意义,中文汉字进行ASC码值比较没什么太大意义,所以这个TermRangeQuery了解就行,用途不太大,一般数字范围查询NumericRangeQuery用的比较多一点,比如价格,年龄,金额

Lucene5学习之TermQuery使用

首先来学习用下TermQuery,这是最简单的一个Query实现,即查询索引文档中是否包含了指定的Term,Lucene官方API注释里是这样说的: public class TermQueryextends QueryA Query that matches documents containing a term. This may be combined with other t

Lucene5学习之Directory理解

Directory即Lucene中对索引目录的一个抽象,体现到API上,它被设计为一个抽象类,类里面定义了一些抽象方法,如listAll列出目录下所有文件,deleteFile(String name) 根据文件名称删除索引文件,这个都是文件的基本操作,其中比较重要的一个接口方法是makeLock,为什么要为索引目录加锁?其实就跟你上厕所为什么要锁门是一样一样滴?我没拉完你就给我乖乖等着。  B

Lucene5学习之使用Ansj-seg分词器

这回我们来玩玩ansj分词器,由于Lucene5.0在API上有点小变化,需要修改ansj分词器源码,重新打包jar包,然后mvn install到本地仓库才能引用到项目中。至于怎么修改以及怎么打包jar,我就不过多说明了,有点麻烦,我想偷个懒,哈哈。这里我就直接把打包后的jar分享给你们,jar包注意在底下的附件里下载。     我就说说,怎么在项目中使用ansj分词器,首先pom.x

Lucene5学习之使用IKAnalyzer分词器

之前的示例中,使用的是默认的StandardAnalyzer分词器,不能有效的进行中文分词,下面演示下如何在Lucene5.0中使用IKAnalyzer分词器。     首先下载IKAnalyzer分词器源码,IKAnalyzer分词器源码托管在OSChina的git上。下载地址: http://git.oschina.net/wltea/IK-Analyzer-2012FF 请如图下载