首先需要清楚一个大前提:在同一个索引文件上,一次只能存在一个writer!
那如果有多个IndexWriter要访问一个索引文件该怎么办?加锁!
Lucene自身提供了4种锁策略:
1) SimpleFSLockFactory
这是基于文件系统的索引默认使用的锁的实现方式。
SimpleFSLockFactory的思路其实就是在IndexWriter访问索引文件的时候,创建一个名为write.lock的文件,再有别的IndexWriter访问该索引文件时,由于发现了write.lock文件的存在,会先暂时等待,直到write.lock被删除。而write.lock则会在某个IndexWriter访问索引文件结束后删除。该实现内部通过调用Java API:File.createNewFile完成。
2) NativeFSLockFactory
此实现基于java.nio,它有一个明显的好处是,当IndexWriter发生异常或JVM宕掉的时候,不会残留write.lock文件,因此你也省却了在此种情况下手工清理write.lock文件的麻烦。而如果你选择的是SimpleFSLockFactory,恰巧在索引的时候停电了,同样贫困的客户又没有装备用电源,这时,你只能等来电时,穿着拖鞋、带着倦意来到电脑前,去删除那个万恶的write.lock文件,否则下次服务启动时将不能正常索引。
既然如此,我们就用NativeFSLockFactory得了,何必要SimpleFSLockFactory呢?因为NativeFSLockFactory在某些共享文件系统中无法正常工作,尤其是NFS
3) SingleInstanceLockFactory
这是个内存锁,也正是RAMDirectory的默认实现。
4) NoLockFactory
说它是种锁实现有点勉强,它的作用就是不加锁。如果你能保证我们之前提到的“大前提”总是成立,那么就选择它吧!
分享到:
相关推荐
#### 第二部分:应用Lucene - **章节内容**: - **Parsing common document formats (解析常见文档格式)**:介绍了解析PDF、Word等常见文档格式的方法,使这些文档可被搜索。 - **Tools and extensions (工具和...
第二章 搜索引擎的结构 2.1 系统概述 搜索引擎主要由三部分组成:网络爬虫(也称为网络机器人)、索引器和查询处理器。首先,网络爬虫负责从互联网上抓取网页;然后,索引器对抓取的网页进行处理,创建索引;最后...
- **标题与描述**: 本资料“nutch+lucene开发自己的搜索引擎ch3.pdf”聚焦于介绍如何使用Nutch和Lucene来构建自己的搜索引擎,特别强调了第三章:开源搜索引擎入门。 - **标签与内容**: 标签为“Nutch”,表明主要...
第二部分为“应用Lucene”,侧重于实际应用场景中的实践技巧。 ##### 第一部分:核心Lucene 1. **Meet Lucene(认识Lucene)** - **章节概述**:本章主要介绍Lucene的基本概念、特点及其在搜索引擎领域的地位。...
《搜索引擎Lucene+Heritrix(第二版)》是一本深度探讨搜索引擎技术的书籍,主要聚焦于开源项目Lucene和Heritrix...而压缩包中的"ch2"可能包含了书中第二章的内容,涉及更具体的细节和技术实现,对于深入学习至关重要。
在**第1章**“搜索引擎总体结构”中,作者从搜索引擎的基本模块出发,如网络爬虫、全文索引结构与Lucene实现、搜索用户界面、计算框架、文本挖掘等方面进行阐述。 - **1.1 搜索引擎基本模块**:这部分简明扼要地...
《搜索引擎Lucene+Heritrix(第二版)2》是一本深入探讨搜索引擎技术的专业书籍,主要围绕两个核心组件——Lucene和Heritrix展开。Lucene是Apache软件基金会的一个开源全文检索库,而Heritrix则是一个强大的网络爬虫...
通过学习《搜索引擎Lucene+Heritrix(第二版)3》,你将掌握搜索引擎的基本原理和实践技巧,了解如何利用开源工具构建自己的搜索引擎系统,从而在信息检索领域提升专业技能。无论是对搜索引擎技术感兴趣,还是希望在...
在"ch2"这个文件中,可能包含了关于第二章的源代码或者教程内容,这部分通常会详细解释如何设置和运行这两个项目。可能包括如何配置Heritrix的爬虫策略,如何定制Lucene的索引和搜索功能,以及如何将两者整合。读者...
在本章"自己动手开发搜索引擎第二章"中,我们将深入探讨如何构建一个基本的搜索引擎,主要涉及以下几个核心知识点: 1. **搜索引擎的概念与工作原理**:搜索引擎是互联网上的一个重要工具,它通过爬取、索引和检索...
《Java例题源码第二章-solr-in-action》是一个包含本书示例代码、数据和配置的资源包,主要用于帮助读者深入理解Java编程中的Solr搜索引擎应用。Solr是Apache Lucene项目的一个子项目,是一个高性能、全文本搜索...
- **2.1.2 编写代码**:实现核心功能,如爬虫、索引构建和查询处理。 - **2.1.3 发布运行**:将系统部署到服务器上,并进行测试。 ##### 2.2 搜索引擎基本技术 - **2.2.1 网络蜘蛛**:用于自动抓取网页内容。 - **...