Lucene系列

来源:互联网 发布:淘宝助理如何同步宝贝 编辑:程序博客网 时间:2024/04/19 14:28

5.4 Lucene索引操作:
5.4.1 添加文本文件索引
5.4.2 创建Lucene增量索引
5.4.3 使用索引项删除文档
5.4.4 使用编号删除文档
5.4.5 压缩文档编号
5.4.6 索引文档更新

5.4.1 添加文本文件索引:

使用IndexWriter来进行。
大致构建步骤:
定义索引文件存储路径 -> 打开待索引文档 -> 构建Analyzer分析器 -> 配置IndexWriterConfig ->
使用IndexWriter来建立索引 -> 通过Document添加Field域文件和内容或其他设置 -> 将document加入到IndexWriter中去
-> 提交IndexWriter的操作,构建索引 -> 关闭相关连接。

5.4.2 创建Lucene增量索引:

数据库的表追加数据,必须前后格式保持一致。但Lucene采用了逻辑结构来管理文档,
一个索引创建后,使用者可添加任意的异构文档,不会影响Lucene的管理能力和检索使用。
增量索引:
在索引生成器中添加模式,不要覆盖原有的索引。在已有的索引基础上追加新的文档。
增量索引通常应用于两种环境:
1、针对指定目录的文件索引:
采用把完成的文件删除或者移动到另一个目录,防止出现重复创建的情况。
2、针对数据库的特定表索引:
添加标识,记录已经索引的记录号,在后续从记录的记录开始索引。

5.4.3 使用索引项删除文档:

一个完整的搜索引擎还需要提供内容删除的功能。
使用IndexWriter.deleteDocuments(queries/term);来进行删除操作。
如:当根据Term对象删除时,是删除的所有匹配的文档。先给所有删除的文档打上标记,在关闭索引/commit时真正从磁盘索引中物理删除。

5.4.4 使用编号删除文档:

精确定位删除索引中指定的文档。
新版本未发现此功能。

5.4.5 压缩文档编号:

在删除文档后,文档编号仍然认为已经被占用。生成下一个文档的编号会在上一个基础上顺序递增。
主要是因为IndexReader不会改变原有文档的唯一编号。可以调用IndexWriter的优化函数压缩编号。
optimize()方法3.5后被弃用,用writer.forceMerge(1)来进行优化压缩段

5.4.6 索引文档更新:

通常的索引文档更新采用先删除后追加的方式实现。
为了避免频繁加载索引影响效率,通常采用批量形式定期删除指定的文档,然后批量确认,保存到磁盘索引目录。
添加文档也可以多个文档一次添加。

0 0
原创粉丝点击