首页 > 代码库 > 《Lucene In Action》 01 初识Lucene
《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等项目。在架设自己的搜索之前,可以了解一下这些已有的解决方案
汤能养身整理,转载注明
《Lucene In Action》 01 初识Lucene
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。