分享

大家使用全文检索的时候,是直接使用Lucene开源库的吗?

大家使用全文检索的时候,是直接使用Lucene开源库的吗?用了solr为什么还要用lucene呢?

已有(2)人评论

跳转到指定楼层
阿飞 发表于 2013-12-1 16:30:59
LUCENE。只是全文的一部分。分词是另一部分。SOLR加入了分布式。和ZK的文件管理。又是更加的一部分,并且。你会遇到很多瓶颈。比如。LUCENE目前的MERGE的算法。不是很好。建立索引的速度跟不上数据库的增量。或者说分词。一些该分的分不出。等等问题。不比搭建一个HADOOP;的轻松多少
回复

使用道具 举报

nettman 发表于 2013-12-1 16:31:27
直接用lucene做索引实时更新和增量更新这些功能
首先Solr是基于Lucene做的,Lucene是一套信息检索工具包,但并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能,因此在使用Lucene时你仍需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。
而Solr的目标是打造一款企业级的搜索引擎系统,因此它更接近于我们认识到的搜索引擎系统,它是一个搜索引擎服务,通过各种API可以让你的应用使用搜索服务,而不需要将搜索逻辑耦合在应用中。而且Solr可以根据配置文件定义数据解析的方式,更像是一个搜索框架,它也支持主从、热换库等操作。还添加了飘红、facet等搜索引擎常见功能的支持。
因而,Lucene使用上更加灵活,但是你需要自己处理搜素引擎系统架构,以及其他附加附加功能的实现。而Solr帮你做了更多,但是是一个处于高层的框架,Lucene很多新特性不能及时向上透传,所以有时候可能发现需要一个功能,Lucene是支持的,但是Solr上已经看不到相关接口。
Lucene更像是一个SDK 有完整的API族以及对应的实现。你可以利用这些在自己的应用里实现高级查询(基于倒排索引技术的),Lucene对单机或者桌面应用很实用很方便。
但是Lucene,需要开发者自己维护索引文件,在多机环境中备份同步索引文件很是麻烦。于是,就有了Solr。

Solr是一个有HTTP接口的基于Lucene的查询服务器,封装了很多Lucene细节,自己的应用可以直接利用诸如 .../solr?q=abc 这样的HTTP GET/POST请求去查询,维护修改索引。

给个比方就是,Lucene是给你一堆包,让你自己从底层构建一个数据库。而Solr是一个实现好的数据库程序,安装后就可以直接用了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条