《Lucene In Action》 01 初识Lucene

基于Lucene 3.0.1

1、Lucene简单定义

Lucene是高性能、可扩展的信息检索(IR)工具库。向用户提供了简单易用的索引和搜索API,屏蔽了内部复杂而先进的信息检索技术实现过程
Lucene仅仅是一个提供搜索功能的类库,你还需要根据实际情况自行完成搜索程序的其他模块(网页抓取、文档处理、服务器运行、用户界面和管理等)
Lucene的核心jar包很小,只有1M左右,核心之外,存在大量的扩展模块。另外你如果寻找一些成型的网页搜索、文档处理或搜索引擎,可以在Lucene wiki的技术支持分页找到

题外话:Nutch是Lucene创始人创建的开源Web搜索引擎,Hadoop是Nutch项目的拓展内容,通过Map/Reduce架构提供分布式存储和计算工具

2、搜索程序的组件

2.1 索引组件
建立索引(indexing)的产出就是索引(index)
获取内容

考虑提供搜索的内容都在哪里,文件系统,内容管理系统,网站,数据库,本地文档等等
考虑是否需要搜索权限控制
考虑是否需要提供增量运行机制,索引时只针对上次运行后有改变的文档
考虑是否需要内容获取模块作为持续运行的后台服务,实时获取新增或修改的文档信息
有很多开源的内容获取应用,如
Solr 支持关系数据库和XML文档,集成Tika可以处理复杂文档
Nutch 大规模Web站点爬虫工具
Grub Web站点爬虫工具
Heritrix 互联网文档搜索程序

建立文档

文档主要包括几个域:title body abstract author url等
考虑如何将原始内容分割成合适的文档
考虑是否需要文档过滤器从原始文档中过滤掉格式等信息
考虑是否需要创建额外的域
考虑是否需要对文档和域加权,加权可以在建立文档时,也可以在搜索期间动态完成
Lucene提供了一个API建立域和文档,Tika可以很好的实现文档过滤

文档分析(分词)

分词

建立索引

将文档加入到索引列表,Lucene提供了一个异常简单的API完成索引操作

2.2 搜索组件
搜索界面

Lucene不提供默认的界面,你要提供一个界面把用户的搜索请求转换成和是的Query对象,以便搜索引擎使用

建立查询

对于建立Query对象,Lucene提供了一个叫做QueryParser的强大开发包

搜素查询

查询索引并返回匹配的文档,可能会对返回的结果过滤、排序
题外话:
常见搜索理论模型:
纯布尔模型
向量空间模型
概率模型
Lucene可针对具体搜索让你决定采用纯布尔模型还是向量空间模型

展现结果

你懂的

2.3 搜索程序的其他模块
管理界面

Lucene管理界面向开发人员提供了大量配置选项

分析界面

Lucene不提供分析工具

分布式搜索

两种基本的方式:
如果处理的数据量较大,可以将数据分割成小块,让多台服务器分别搜索对应的部分,然后将各部分的搜索结果合并成总结果集
如果想增加搜索并发量,可以将同一索引复制到多台服务器,由负载均衡分发请求
Lucene没有提供分布式支持,但Apache Lucene项目下的Solr和Nutch都提供了对索引拆分和复制的支持。还有Katta、Elastic search等项目。在架设自己的搜索之前,可以了解一下这些已有的解决方案
汤能养身整理,转载注明
时间: 2024-10-17 15:33:31

《Lucene In Action》 01 初识Lucene的相关文章

初识Lucene 4.5全文搜索

近期想研究下lucene,但网络上的教程大多都是lucne 3.x版本的讲解.可是lucene版本的更新速度快的惊人,目前已经到了4.8版了,只好去查阅官方文档.虽然英文不大好,但稍微对比了下发现3.x版本至4.x版本的修改非常之大.接下来我就以4.5版来操作,分享下我对luence的初步认识. 先给大家看一张图(来至<Lucene  in  action>): 此图很形象的描述了lucene的基本流程,简而言之就是:1.创建索引:2.检索索引. 太深的道理与原理我目前也还是一知半解,所以就以

初识Lucene 4.5.0 全文搜索--(二)

上一篇文章初识Lucene 4.5.0--(一)已经介绍了如何创建索引与检索索引.接下来就是删除与更新啦~ 一.删除索引. 原本3.x版本时 IndexWriter 与 IndexReader 都是有删除方法的,让我们先来看看lucene 3.6 api文档中的IndexReader的描述: 从4.0开始已经被删除了,所以现在只能用IndexWriter中的方法来进行删除.有哪些方法呢?继续看文档(lucene 4.5 api): 除了上面的六个外还有一个方法tryDeleteDocument(

第一章 初识Lucene

多看几遍 1.1 应对信息爆炸 1.2 Lucene 是什么 1.2.1 Lucene 能做些什么 1.2.2 Lucene 的历史 1.3 Lucene 和搜索程序组件 基本概念 索引操作 将原始数据引入可被高效查找的对照表中,以便能够对这些内容进行快速搜索. 这里的对照表的结构是什么样的?是二叉排序树还是红黑树? 索引是一个精心设计的数据结构. 1.3.1 索引组件 获取内容 建立文档 文档分析 文档索引

Lucene in action 第一章 初识Lucene

1.3 搜索程序组件 Lucene提供搜索程序的最核心模块:索引模块和搜索模块的类库. Solr基于Lucene,提供更丰富的UI和API可以直接部署和使用 下图为搜索程序的基本框架.中间黑体部分为Lucene完成的功能,也是搜索引擎的最核心部分. 搜索引擎评价: 满足基本功能:搜索结果正确显示 搜索回复时间 扩展功能:语法纠错,关键词高亮等 1.3.1索引组件 搜索引擎原理: 朴素思想:顺序搜索 问题:速度太慢 解决:对文本内容建立索引,通过索引返回结果 1.获取内容: 网页内容:爬虫工具 文

初识Lucene

最近准备开发搜索引擎,而在Java的领域开发搜索引擎,基本都要了解Lucene.Lucene是提供高性能的全文检索包,但不提供完整的搜索功能.本文在这里简单介绍Lucene的基本架构与优点.Luence主要的应用方向是嵌入到各种应用中实现针对应用的全文索引/检索功能. Luence的优点 为什么在Java语言中开发搜索引擎基本都会提到Lucene呢?说明它必定有很多优秀的地方,根据网上的资料了解到它有以下的优点: 索引文件格式独立于应用平台.Lucene定义了一套以8位字节为基础的索引文件格式,

实战 Lucene,第 1 部分: 初识 Lucene (zhuan)

http://www.ibm.com/developerworks/cn/Java/j-lo-lucene1/ *************************************************** Lucene 简介 Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能.Lucene 目前是 Apache Jakarta 家族中的一个开源项目.也是目前最为流行的基于 Java 开源全文检索工具包. 目前已经

初识 Lucene .

Lucene是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能.Lucene 目前是 ApacheJakarta 家族中的一个开源项目.也是目前最为流行的基于 Java 开源全文检索工具包. 目前已经有很多应用程序的搜索功能是基于Lucene 的,比如 Eclipse 的帮助系统的搜索功能.Lucene能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化的文本的,Lucene 就能对你的文档进行索引和搜索.比如你要对一些

实战 Lucene,第 1 部分: 初识 Lucene

???Lucene 简介 Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能.Lucene 目前是 Apache Jakarta 家族中的一个开源项目.也是目前最为流行的基于 Java 开源全文检索工具包. 目前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能.Lucene 能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化的文本的,Lucene 就能对你的文

(转)实战 Lucene,第 1 部分: 初识 Lucene

Lucene 简介 Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能.Lucene 目前是 Apache Jakarta 家族中的一个开源项目.也是目前最为流行的基于 Java 开源全文检索工具包. 目 前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能.Lucene 能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化的文本的,Lucene 就能对你的文档进