lucene2.9使用指南

 
Apache Lucene项目是一个完全用Java编写的高性能、全功能的文本搜索引擎库,最近它发布了2.9版。此次发布在2.4.1版的基础上进行了许多增强:

    * 单个Segment的查询及缓存,这使reopen操作的速度显著提高。
    * 为IndexWriter增加了接近实时的搜索功能。
    * 新的Query类型。
    * 更智能,伸缩性更强的多词(multi-term)查询(如Wildcard,Range等等)。
    * 最新优化过的Collector/Scorer API。
    * 新增的Unicode支持及字符集(Collation)。
    * 基于Attribute的TokenStream新API。
    * 在contrib中提供了新的QueryParser框架,并替换了核心实现。
    * 在基于字段搜索,或使用自定义的Collector的时候可取消Score功能,这样可以获得显著的性能提高。
    * 新的分析器(PesianAnalyzer,ArabicAnalyzer即SmartChineseAnalyzer)。
    * 为大型文本新增快速向量高亮工具(fast-vector-highlighter)。
    * 对数字字段提供了高性能的查询支持。这些字段使用前缀树的结构进行索引,能直接支持简单而高效的数字范围查询,而不需要在外部对数字进行处理。

虽然Lucene团队打算在小版本的更新上做到完整的兼容,但是Lucene 2.9在不少方面破坏了这一点。

 

下面是我使用过程中遇到的一些问题和解决方案:

 

1、添加索引


最新2.9的IndexWriter 建立方式:

 

 

 

IndexWriter 参数调整

 

 


把其他格式转化为lucene需要的Document格式

 

 

 

 

向IndexWriter添加doc,可以插入多条doc

 

 

 

开始写入(close的时候为实际写入过程)

 

 

读取写入的索引数

 

 

在close之前可以进行优化(不建议在建立索引时候使用)

writer.optimize()

 

 

2、清空索引

 

 

 

 

3、删除指定索引(和清空差不多)

 

 

4、更新索引

就是先删除再添加的过程,没有直接update的办法

 

5、读取建立的索引分词

 

 

6、搜索

 

最新2.9的IndexSearcher 建立方式:

 

 

 

创建查询条件(这里建一个最复杂的,根据多个限定条件查找,并且有的限定条件放在多个field中查找,有精确限定和范围限定)


 

 

排序情况

 

2.9最新查询方式,只是获取id

 

 

 

加入分页

 

循环解析docList中的Document获取所需要的值

doc.get("title");

...

 

 

7、关于分词

注意建立索引和搜索时候的analyzer必须一致,而且建立索引和搜索时候目录也要保持一致

 

lucene自带的一些分词器

StandardAnalyzer() 会按空格和标点符号划分

WhitespaceAnalyzer() 会按空格划分

 

中文分词这里使用的是paoding的中文分词

是先按词库划分,当词库中不存在时按二分法进行划分

 

 

 

8、其他待补充

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值