1.前言

企业站内搜索技术选型

在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。

单独使用Lucene实现

单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议采用。

使用GoogleBaidu接口 

通过第三方搜索引擎提供的接口实现站内搜索,这样和第三方引擎系统依赖紧密,不方便扩展,不建议采用。

使用Solr实现

基于Solr实现站内搜索扩展性较好并且可以减少程序员的工作量,因为Solr提供了较为完备的搜索引擎解决方案,因此在门户、论坛等系统中常用此方案。

2.初识Solr

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化

Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene。

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果

Solr类似webservice,调用接口,实现增加,修改,删除,查询索引库。

3.Lucence的短处

Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,Lucene提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索引擎。

Solr的目标是打造一款企业级的搜索引擎系统,它是一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。

Solr类似webservice,提供接口,调用接口,发送一些特点语句,实现增加,删除,修改,查询。

4.Solrj

什么是SolrJ

solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务

5.Solr优缺点

优点

  1. Solr有一个更大、更成熟的用户、开发和贡献者社区。
  2. 支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。
  3. Solr比较成熟、稳定。
  4. 不考虑建索引的同时进行搜索,速度更快。

缺点

  1. 建立索引时,搜索效率下降,实时索引搜索效率不高。

6.其他基于Lucene的开源搜索引擎解决方案*

  1. 直接使用 Lucene

说明:Lucene 是一个 JAVA 搜索类库,它本身并不是一个完整的解决方案,需要额外的开发工作。

优点:成熟的解决方案,有很多的成功案例。apache 顶级项目,正在持续快速的进步。庞大而活跃的开发社区,大量的开发人员。它只是一个类库,有足够的定制和优化空间:经过简单定制,就可以满足绝大部分常见的需求;经过优化,可以支持 10亿+ 量级的搜索。

缺点:需要额外的开发工作。所有的扩展,分布式,可靠性等都需要自己实现;非实时,从建索引到可以搜索中间有一个时间延迟,而当前的“近实时”(Lucene Near Real Time search)搜索方案的可扩展性有待进一步完善

  • Katta

说明:基于 Lucene 的,支持分布式,可扩展,具有容错功能,准实时的搜索方案。

优点:开箱即用,可以与 Hadoop 配合实现分布式。具备扩展和容错机制。

缺点:只是搜索方案,建索引部分还是需要自己实现。在搜索功能上,只实现了最基本的需求。成功案例较少,项目的成熟度稍微差一些。因为需要支持分布式,对于一些复杂的查询需求,定制的难度会比较大。

  • Hadoop contrib/index

说明:Map/Reduce 模式的,分布式建索引方案,可以跟 Katta 配合使用。

优点:分布式建索引,具备可扩展性。

缺点:只是建索引方案,不包括搜索实现。工作在批处理模式,对实时搜索的支持不佳。

  • LinkedIn 的开源方案

说明:基于 Lucene 的一系列解决方案,包括 准实时搜索 zoie ,facet 搜索实现 bobo ,机器学习算法 decomposer ,摘要存储库 krati ,数据库模式包装 sensei 等等

优点:经过验证的解决方案,支持分布式,可扩展,丰富的功能实现

缺点:与 linkedin 公司的联系太紧密,可定制性比较差

  • Lucandra

说明:基于 Lucene,索引存在 cassandra 数据库中

优点:参考 cassandra 的优点

缺点:参考 cassandra 的缺点。

  • HBasene

说明:基于 Lucene,索引存在 HBase 数据库中

优点:参考 HBase 的优点

缺点:参考 HBase 的缺点。另外,在实现中,lucene terms 是存成行,但每个 term 对应的 posting lists 是以列的方式存储的。随着单个 term 的 posting lists 的增大,查询时的速度受到的影响会非常大

搜索引擎 Solr 简介相关推荐

  1. Spring Data Solr教程:Solr简介

    大多数应用程序必须具有某种搜索功能. 问题在于搜索功能通常是巨大的资源消耗,它们可能通过给数据库造成沉重的负担而破坏我们应用程序的性能. 因此,将负载转移到外部搜索服务器是个好主意. 这是我的Spri ...

  2. Java Solr:(一)Solr 简介

    Solr 简介 1.为什么使用 Solr 2.常见搜索解决方案 3.Solr 简介 4.正向索引和反向索引 1.为什么使用 Solr 在海量数据下,对 MySQL 或 Oracle 进行模糊查询或条件 ...

  3. 企业级搜索引擎solr零基础入门

    企业级搜索引擎solr零基础入门(持续更新中-) 1.下载与安装 官网地址:http://lucene.apache.org/solr/ 将下载的压缩包直接解压即可 2.服务启动 2.1进入bin目录 ...

  4. 搜索引擎solr和elasticsearch

    版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 刚开始接触搜索引擎,网上收集了一些资料,在这里整理了一下分享给大家. 一.关 ...

  5. solr简介——(九)

    下载:     http://archive.apache.org/dist/lucene/solr/ 1.什么是solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lu ...

  6. Solr简介,功能,特性

    1,什么是solr? Solr是一个独立的企业级搜索应用服务器,他对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务提供一定格式的xml文件,生成索引:也可以通 ...

  7. 全文搜索引擎 Elasticsearch 简介 及其与 Python 的对接实现

    什么是 Elasticsearch 想查数据就免不了搜索,搜索就离不开搜索引擎,百度.谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据.然而对于我们自己的业务数据来说,肯 ...

  8. 搜索引擎语法简介 google shodan censys zoomeye fofa dnsdb

    搜索引擎是我日常工作中用得最多的一款工具,国内常用的搜索引擎包括Baidu,sougou,bing等.但我本篇要纪录的并不是这些常用的搜索引擎,而是信息安全从业人员必备的几款网络搜索引擎.本篇要介绍的 ...

  9. 搜索引擎solr系列---多字段匹配的实现方法

    https://blog.csdn.net/wohaqiyi/article/details/78402262 solr可以实现多字段匹配查询的结果,即传入一个条件,可以按照你预选设置好的匹配范围去匹 ...

最新文章

  1. 7万能驱动64位离线_Dism++离线安装.NET Framework 3.5教程
  2. 51nod 1268 和为K的组合 dfs
  3. 批量删除数据库中有特定开始字符的表、视图和存储过程
  4. fastdfs java token_fastdfs-client-java操作fastdfs
  5. mac find桌面显示desktop问题
  6. flask 验证ok 另外一种方式
  7. 微信小程序单指拖拽和双指缩放旋转
  8. 随机信号分析学习笔记(1)
  9. 车牌字符识别中ctc loss损失函数理解
  10. 业务流程优化设计之思想和原则
  11. python 实现表情迁移
  12. 祭奠自己逝去的三年时光
  13. 入门安全测试需要知道什么?需要掌握哪些知识?
  14. 个人ACM模板(待持续补充)
  15. 具有更高电流SIO通道的四路IO-Link主机:线性设计注意的ADI电源---凯利讯半导体
  16. 图解 JavaScript 对象
  17. 曼昆宏观经济学第8版笔记及课后答案
  18. maven编译报错Blocked mirror for repositories解决
  19. 《SAP ABAP 李斌的开源工具箱》专栏目录
  20. Python_计算毫秒时间差

热门文章

  1. 计算机会议在美国的英语文章,英文一篇计算机国际会议的开幕词
  2. CCF 模拟题,公共钥匙盒
  3. omapl138移植uboot系列之启动TI官方移植的Linux内核(启动内核第一篇)
  4. [BZOJ]1064 [NOI2008] 假面舞会 dfs判环
  5. Smarting:第一款真正意义上的便携式可移动脑电设备
  6. 可以群发消息的微信营销软件
  7. 数据流程图中的几种循环画法
  8. 量化、交易、策略、算法精选论文汇总,建议收藏
  9. python中[::]的含义
  10. 几种梯度下降法比较最小值与鞍点(SGD、Momentum、NAG、Adagrad、Adadelta与Rmsprop)