`
BuN_Ny
  • 浏览: 85485 次
  • 来自: 济南
社区版块
存档分类
最新评论

18) 第二章 索引:锁策略--Lucene自身提供的锁实现

 
阅读更多

  首先需要清楚一个大前提:在同一个索引文件上,一次只能存在一个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

       说它是种锁实现有点勉强,它的作用就是不加锁。如果你能保证我们之前提到的“大前提”总是成立,那么就选择它吧!

 

 

 

 

 

4
1
分享到:
评论

相关推荐

    Lucene In Action-book

    #### 第二部分:应用Lucene - **章节内容**: - **Parsing common document formats (解析常见文档格式)**:介绍了解析PDF、Word等常见文档格式的方法,使这些文档可被搜索。 - **Tools and extensions (工具和...

    基于lucene的索引与搜索

    第二章 搜索引擎的结构 2.1 系统概述 搜索引擎主要由三部分组成:网络爬虫(也称为网络机器人)、索引器和查询处理器。首先,网络爬虫负责从互联网上抓取网页;然后,索引器对抓取的网页进行处理,创建索引;最后...

    nutch+lucene开发自己的搜索引擎ch3.pdf

    - **标题与描述**: 本资料“nutch+lucene开发自己的搜索引擎ch3.pdf”聚焦于介绍如何使用Nutch和Lucene来构建自己的搜索引擎,特别强调了第三章:开源搜索引擎入门。 - **标签与内容**: 标签为“Nutch”,表明主要...

    Lucene in Action.pdf

    第二部分为“应用Lucene”,侧重于实际应用场景中的实践技巧。 ##### 第一部分:核心Lucene 1. **Meet Lucene(认识Lucene)** - **章节概述**:本章主要介绍Lucene的基本概念、特点及其在搜索引擎领域的地位。...

    搜索引擎Lucene+Heritrix(第二版)

    《搜索引擎Lucene+Heritrix(第二版)》是一本深度探讨搜索引擎技术的书籍,主要聚焦于开源项目Lucene和Heritrix...而压缩包中的"ch2"可能包含了书中第二章的内容,涉及更具体的细节和技术实现,对于深入学习至关重要。

    解密搜索引擎技术实战:Lucene&Java精华版

    在**第1章**“搜索引擎总体结构”中,作者从搜索引擎的基本模块出发,如网络爬虫、全文索引结构与Lucene实现、搜索用户界面、计算框架、文本挖掘等方面进行阐述。 - **1.1 搜索引擎基本模块**:这部分简明扼要地...

    搜索引擎Lucene+Heritrix(第二版)2

    《搜索引擎Lucene+Heritrix(第二版)2》是一本深入探讨搜索引擎技术的专业书籍,主要围绕两个核心组件——Lucene和Heritrix展开。Lucene是Apache软件基金会的一个开源全文检索库,而Heritrix则是一个强大的网络爬虫...

    搜索引擎Lucene+Heritrix(第二版)3

    通过学习《搜索引擎Lucene+Heritrix(第二版)3》,你将掌握搜索引擎的基本原理和实践技巧,了解如何利用开源工具构建自己的搜索引擎系统,从而在信息检索领域提升专业技能。无论是对搜索引擎技术感兴趣,还是希望在...

    Lucene2.0+Heritrix(源代码)

    在"ch2"这个文件中,可能包含了关于第二章的源代码或者教程内容,这部分通常会详细解释如何设置和运行这两个项目。可能包括如何配置Heritrix的爬虫策略,如何定制Lucene的索引和搜索功能,以及如何将两者整合。读者...

    自己动手开发搜索引擎第二章

    在本章"自己动手开发搜索引擎第二章"中,我们将深入探讨如何构建一个基本的搜索引擎,主要涉及以下几个核心知识点: 1. **搜索引擎的概念与工作原理**:搜索引擎是互联网上的一个重要工具,它通过爬取、索引和检索...

    Java例题源码第二章-solr-in-action:本书的示例代码、数据和配置

    《Java例题源码第二章-solr-in-action》是一个包含本书示例代码、数据和配置的资源包,主要用于帮助读者深入理解Java编程中的Solr搜索引擎应用。Solr是Apache Lucene项目的一个子项目,是一个高性能、全文本搜索...

    search engine

    - **2.1.2 编写代码**:实现核心功能,如爬虫、索引构建和查询处理。 - **2.1.3 发布运行**:将系统部署到服务器上,并进行测试。 ##### 2.2 搜索引擎基本技术 - **2.2.1 网络蜘蛛**:用于自动抓取网页内容。 - **...

Global site tag (gtag.js) - Google Analytics