最近,在写一个项目,用到搜索引擎一项功能,本想弄一个站内搜索,但是我的项目还用不到~~~所以就写了一个基于商品关键词的搜索,
本打算用数据库就够了,但是想一下,如果商品很多的情况下,比如几十万,上百万等等,用数据库的匹配关键字查询效率可想而知,很低的说~~~
所以就行着,用Lucene来代替~~用Lucene对数据库中的商品的名字和描述进行建立索引,并搜索查询!
当然,我这个项目,还用到了,网站消息推送和商品推荐系统等功能,相关介绍请看相关博客!
一,Lucene是什么?
Lucene是一款高性能的,可扩展的信息检索(IR)工具库。信息检索库是指文档搜索,文档内信息检索或者文档相关元数据搜索等操作。Lucene能够融入到你的应用程序,以增加搜索功能。它是一款以java实现的成熟,自用,开源的软件项目,也是Apache软件基金(Apache Software Foundation)中的一个项目,并且基于Apache软件许可协议授权。因此,Lucene在近年来已经成为最受欢迎的开源信息检索工具库。
相关介绍大家还可以百度一下,很多相关的介绍!它可以帮助你对要搜索的信息建立索引,并且进行搜索!
二,Lucene能做什么?
Lucene允许你向自己的应用程序中添加搜索功能。Lucene能够把你从文本中解析出来的数据进行索引和搜索。Lucene并不关心你的数据来源,格式,甚至不关心数据的语种。
只要能把他转换为文本格式即可!当然,你也可以对存储在数据库中的数据进行索引,对文件进行索引以及对你抓取的网页进行索引并查询!!当然,网页抓去并不包含在Lucene中,需要你单独去写爬虫程序!!
Lucene说白了,就是“建立索引,搜索索引”!!
第一个开源的web搜索引擎Nutch也是就与Lucene的~~
Lucene作为一个核心搜索库,并不提供任何功能来实现内容的获取。内容获取的实现完全依赖于你的应用程序或者一款其他软件。目前,有大量的开源爬虫软件可以实现这个功能,如:
1,Solr:(http://lucene.apache.org/solr)Apache Lucene的子项目,支持从关系数据库和xml文档中提原始数据,以及能够通过集成Tika来处理复杂文档。
2,Nutch:(http://lucene.apache.org/nutch),另一个Apache Lucene子项目,它包含大规模的爬虫工具,能够抓取和分辨web站点数据。
3,Grub:(http://www.grub.org)比较流行的开源web爬虫工具。
4,Heritrix:(http://crawler.archive.org)是一款开源的Internate文档搜索程序
5,Drods:是另一个Apache Lucene子项目
6,Aperture:它支持从web站点,文件系统和邮箱中抓去,并解析和索引和其中的文本数据。
7,google企业连接管理工程(http://code.google.com/p/google-enterprise-connector-manager)提供大量针对非web形式的内容连接方案。
好了,大家也对Lucene有了一个大概了解。相关的在以后在介绍,稍后,还会给大家贴出相关代码,大家也可以搜一下相关资料,很多的!!!