版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781
刚开始接触搜索引擎,网上收集了一些资料,在这里整理了一下分享给大家。
搜索引擎(search engine)是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、门户搜索引擎与免费链接列表等。
一个搜索引擎由搜索器 、索引器 、检索器 和用户接口 四个部分组成。搜索器的功能是在互联网 中漫游,发现和搜集信息。索引器的功能是理解搜索器所搜索的信息,从中抽取出索引项,用于表示文档 以及生成文档库的索引表。检索器的功能是根据用户的查询在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并实现某种用户相关性反馈机制。用户接口的作用是输入用户查询、显示查询结果、提供用户相关性反馈机制。
solr和elasticsearch都是基于lucene实现的,因此这里有必要对lucene进行介绍。
lucene是一个全文检索引擎的架构。那什么是全文搜索引擎?
从搜索结果来源的角度,全文搜索引擎又可细分为两种,一种是拥有自己的检索程序(indexer),俗称“蜘蛛”(spider)程序或“机器人”(robot)程序,并自建网页数据库,搜索结果直接从自身的数据库中调用,如上面提到的7家引擎;另一种则是租用其他引擎的数据库,并按自定的格式排列搜索结果,如lycos引擎。
solr是一个基于lucene的java搜索引擎服务器。solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 xml/xslt 和 json 格式)。它易于安装和配置,而且附带了一个基于 http 的管理界面。solr已经在众多大型的网站中使用,较为成熟和稳定。solr 包装并扩展了 lucene,所以solr的基本上沿用了lucene的相关术语。更重要的是,solr 创建的索引与 lucene 搜索引擎库完全兼容。通过对solr 进行适当的配置,某些情况下可能需要进行编码,solr 可以阅读和使用构建到其他 lucene 应用程序中的索引。此外,很多 lucene 工具(如nutch、 luke)也可以使用solr 创建的索引。
书籍推荐一本不错的书籍:《lucene in action》有中文版的
elasticsearch是一个基于apache lucene(tm)的开源搜索引擎。无论在开源还是专有领域,lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
但是,lucene只是一个库。想要使用它,你必须使用java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
elasticsearch也使用java开发并使用lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的restful api来隐藏lucene的复杂性,从而让全文搜索变得简单。
因为博主后面主要了解学习elasticsearch,因此对elasticsearch有更多的学习资料推荐。
两篇网页版教程,十分全面:
<a href="http://udn.yyuap.com/doc/mastering-elasticsearch/chapter-5/54_readme.html">http://udn.yyuap.com/doc/mastering-elasticsearch/chapter-5/54_readme.html</a>
安装插件:
<a href="http://blog.csdn.net/wenqisun/article/details/47952199">http://blog.csdn.net/wenqisun/article/details/47952199</a>
一篇非常不错的文章(必看):
<a href="http://www.aboutyun.com/thread-17078-1-1.html">http://www.aboutyun.com/thread-17078-1-1.html</a>
elasticsearch 集群搭建(建议选择比较低版本搭建):
<a href="http://my.oschina.net/xiaohui249/blog/228748">http://my.oschina.net/xiaohui249/blog/228748</a>
五类elasticsearch扩展性插件推荐:
<a href="http://cloud.51cto.com/art/201505/476450.htm">http://cloud.51cto.com/art/201505/476450.htm</a>
elasticsearch 与 solr 的比较总结
二者安装都很简单;
solr 利用 zookeeper 进行分布式管理,而 elasticsearch 自身带有分布式协调管理功能;
solr 支持更多格式的数据,而 elasticsearch 仅支持json文件格式;
solr 官方提供的功能更多,而 elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
solr 在传统的搜索应用中表现好于 elasticsearch,但在处理实时搜索应用时效率明显低于 elasticsearch。
solr 是传统搜索应用的有力解决方案,但 elasticsearch 更适用于新兴的实时搜索应用。
两者对比更详细介绍请看如下文章:
<a href="http://www.cnblogs.com/chowmin/articles/4629220.html">http://www.cnblogs.com/chowmin/articles/4629220.html</a>