MyException - 我的异常网
当前位置:我的异常网» 开源软件 » 开源搜寻框架笔记

开源搜寻框架笔记

www.MyException.Cn  网友分享于:2015-08-26  浏览:6次
开源搜索框架笔记

首推的当然时lucene了,先介绍这个吧

lucene : 是一个文件搜索工具包,包括了完整的查询引擎和索引引擎及部分的分析引擎。为apache下的开源子项目。

特点:

1.索引文件独立于操作系统,自己定义了一套8字节为基础的索引文件格式

2.在传统倒排索引的基础上,实现了分块索引,对于新增的文件建立小索引,并能提供索引合并以提升效率。

3.强大的查询引擎。

4.设计了独立于语言和文件格式的文件分析接口,通过接收 token流解析文件,方便扩展。

 

倒排序算法:

传统的记录方式是 文件 --- > 关键词 的索引方式。

倒排序   关键词 --- > 文件  的索引方式

 

lucene 还增加了两个位置:

字符位置:在文章中出现的位置

关键词位置:是文章中的第几个关键词 

针对这两种情况出现了:出现频率和出现位置。详细如下

关键词 文章号 出现频率 出现位置 。lucene的索引文件就是如下所示。

haha   1[2],2[1]      2,6,8    

 

haha 这个关键词在文件1中出现两次,在文章2中出现1次。在文章1中出现的位置是2,6 。在文章2中出现的位置8。 

 

以上就分出了三个文件 : 辞典文件(存放关键词,同时保存了指向频率文件和位置文件的指针,取得具体出现的频率和位置) 频率文件 位置文件 

具体采用的算法是:二元搜索算法。

 

field : 这个概念来描述存放位置,例如标题中还是URL,还是内容中。该信息也记录在辞典文件中,一个关键词必定属于一个或是多个field.

 

 

solr:这个是基于lucene开发的一个企业级搜索应用服务器。提供web-service,restful-api ,普通http-get请求的。简化了lucene的API,是一个完整的搜索引擎框架。

 

nutch:一个开源的基于lucene 开发的搜索引擎,包含了所有的搜索引擎的功能。

安装分为三个层次:基于本地文件系统,基于局域网,基于internet,用户根据自己需求来选择不同的层次。

 

架构上分为两个部分:数据的抓取和索引的创建。有一套非常良好的数据抓取工具包。

nutch和lucene选择区别,可以简单的话,nutch除了封装了lucene的索引部分外,还提供了一套数据抓取的工作,所以若是你的数据源来源于你自己,那么完全采用lucene即可,若是你的数据源依赖于外部网络。那么采用nutch是一个很好的选择。

 

compass:也是一个java开源框架。包含了所有搜索引擎的基本功能,但是提供了很多特性,例如强大的O/R mapping。搜索部分也是基于lucene

可以容易同hibernate集成,并将数据进行索引。

 

同时支持一些分布式框架的集成,例如:terracotta 

 

总结:

lucene:基本的搜索和索引工具。

compass:简化API,轻松的将java对象映射到搜索引擎中。

SOLR:简化API,暴露一个http服务来进行搜索和索引。

nutch:简化API,同时提供丰富的数据抓取工具。

 

 

文章评论

程序员必看的十大电影
程序员必看的十大电影
我是如何打败拖延症的
我是如何打败拖延症的
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
中美印日四国程序员比较
中美印日四国程序员比较
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
旅行,写作,编程
旅行,写作,编程
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
编程语言是女人
编程语言是女人
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员都该阅读的书
程序员都该阅读的书
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
老程序员的下场
老程序员的下场
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
我的丈夫是个程序员
我的丈夫是个程序员
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Java程序员必看电影
Java程序员必看电影
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
一个程序员的时间管理
一个程序员的时间管理
程序员的鄙视链
程序员的鄙视链
鲜为人知的编程真相
鲜为人知的编程真相
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
每天工作4小时的程序员
每天工作4小时的程序员
如何成为一名黑客
如何成为一名黑客
为什么程序员都是夜猫子
为什么程序员都是夜猫子
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
漫画:程序员的工作
漫画:程序员的工作
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
那些争议最大的编程观点
那些争议最大的编程观点
程序员应该关注的一些事儿
程序员应该关注的一些事儿
代码女神横空出世
代码女神横空出世
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
总结2014中国互联网十大段子
总结2014中国互联网十大段子
10个调试和排错的小建议
10个调试和排错的小建议
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有