架构 7年前

搜索引擎调研

作者头像 刘宇帅
2915 0

定义

搜索引擎(search engine)是一种信息检索系统,旨在协助搜索存储在计算机系统中的信息。搜索结果一般被称为“hits“,通常以表单的形式列出。网络搜索引擎是常见、公开的一种搜索引擎,其功能为搜索互联网上储存的信息。

工作方式

搜索引擎为一组项目提供一个接口,使用户可以指定关于感兴趣的项目的标准,并让引擎找到匹配的项目。搜索查询通常表示为识别一个或多个文档kennel包含的期望概念的一组单词。有多种样式的搜索查询语法在严格性上有差异。它也可以在以前的站点中搜索搜索引擎中的名称。而一些文本搜索引擎要求用户输入由白色空格分割的两个或三个字,其他搜索引擎可以使用户能够指定整个文档,图片,声音和各种形式的自然语言。一些搜索引擎对搜索查询进行改进,以增加通过称为查询扩展的过程提供质量集合的可能性。查询理解方法可用于标准话查询语言。
基于索引的搜索引擎匹配查询指定条件的项目列表通常会排序或排名。按相关性排列项目(从最高到最低)减少查找所需信息所需的时间。概率搜索引擎根据相似性度量(每个项目和查询之间,通常以1到0,1的比例最相似)和有时受欢迎程度或权限或使用相关性反馈来评估项目。布尔搜索引擎通常只返回匹配的项目,而不考虑订单,为了提供根据一些标准快熟排序的一组匹配项目,搜索引擎通常将通过称为索引的过程来收集关于所考虑的一组项目的元数据。
索引通常需要较少的计算机存储,这就是为什么一些搜索引擎仅存储索引的信息而不是每个项目的完整内容,而是提供导航到搜索引擎结果页面中的项目的方法。或者,搜索引擎可以将每个项目的副本存储在高速缓存中,使得用户可以在索引时或为了归档目的看到该项目的状态,或者使得重复的进程更有效和更快地工作。其他类型的搜索引擎不存储索引。抓取器或蜘蛛型搜索引擎(也称为实时搜索引擎)可以在搜索查询时收集和评估项目,基于起始项目的内容(称为种子或种子URL)动态考虑附加项目互联网爬虫的情况。元搜索引擎既不存储索引也不存储缓存,而只是重新使用一个或多个其他搜索引擎的索引或结果来提供聚合的最终结果集。

类型

  1. 按内容

    • 桌面搜索
    • 联合搜索
    • 人类搜索引擎
    • 元搜索引擎
    • 多搜索
    • 搜索聚合器
    • 网页搜索引擎
  2. 按内容
    • 全文检索
    • 图像搜索
    • 视频搜索引擎
  3. 按界面
    • 增量搜索
    • 即时搜索
    • 语义搜索
    • 基于选择的搜索
  4. 按主题
    • 书目数据库
    • 企业搜索
    • 医学文献检索
    • 垂直搜索

Lucene

Lucene是一套用于全文检索和搜索的开放源代码程序库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程序接口,能够做全文索引和搜索,在Java开发环境里Lucene是一个成熟的免费开放源代码工具;就其本身而论,Lucene是现在并且是这几年,最受欢迎的免费Java信息检索程序库。

基于Lucene的项目

  • Apache Nutch - 提供成熟可用的网络爬虫
  • Apache Solr - 基于Lucene核心的高性能搜索服务器,提供JSON/Python/Ruby API
  • Elasticsearch - 企业搜索平台,目的是组织数据并使其易于获取
  • DocFetcher - 跨平台的本机文件搜索桌面程序
  • Lucene.NET - 提供给.NET平台用户的Lucene类库的封装
  • Swiftype - 基于Lucene的企业级搜索
  • Apache Lucy - 为动态语言提供全文搜索能力,是Lucene Java的C接口
  • Luke - Java编写的用户界面用于编辑Lucene的索引和,此项目停止开发

Solr

Solr是Apache Lucene项目的开源企业搜索平台。其主要功能包括全文检索、分面搜索、动态聚合、数据库集成,以及富文本的处理。Solr是高度可扩展的,并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎,Solr4还增加了NoSQL支持。

Elasticsearch

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

作者头像

刘宇帅

非著名程序员,全栈开发工程师,长期专注系统开发与架构设计。

提示

功能待开通!


暂无评论~

相关文章

分布式架构之CAP理论/AP架构/CP架构

在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consistency) (等同于所有节点返回的数据都是一致的) 可用性(Availability)(每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据) 分区容错性(Partition tolerance)(大部分分布式系统都不能在时限内达成数据一致性,就意味分布式系统一定会发生了分区的情况。这就是再分布式系统中 P 是一定该发生的,那么 A 和 C 我们只能选择一个。) Zoopk

全链路压测调研

什么是全链路压测 使用真实生产业务场景、在真实的生产系统环境下根据历史用户访问记录构造海量用户请求对整个业务链进行压力测试并生成报告,根据报告持续调优的过程。 为什么要全链路压测 我们针对单机器单系统的压测虽然可以掌握单个机器或服务的服务能力但是并不能依此来推测整个系统的服务能力,因为任何一个具体的业务系统都可能在系统容量、业务代码性能、物理机器、网络、中间件和各个系统之间调用或具体的业务流程中等等任何一点上存在瓶颈进而导致真个业务系统的服务能力下降,而这些众多的点我们没办法去确定具体那个点会成为瓶颈,我们只能通过全链路压测来测试服务能力找到瓶颈,因为我们要服务于用户而全链路压测的流量正是 m

网站架构之负载均衡方案

什么负载均衡 当我们单台的服务器无法支持用户请求的时候就需要把机器扩充到几台、几十台甚至几百台,而当用户请求到的时候我们合理的把用户请求分发到各个服务器,这就是负载均衡。负载均衡要理解最重要的一点,我这里用了“合理的分发”而不是平均分发,因为负载均衡并不是简简单单的均分流量,我们需要考虑到不同的服务器硬件配置、网络情况来合理的分配分配流量以达到各个服务器均不超载、合理利用集群资源达到最佳的服务质量。当然当我们用多台服务器做负载均衡时一般会选用相同规格的机器,但是不排除网络延迟、机器突发故障灯引起的单台服务器负载飙升处理能力下降等情况。 网站架构中负载均衡的应用 从图中可以看到网站中对负载均衡

20190117 负载均衡分享

什么是负载均衡 负载均衡就是用多台服务器对外提供单一服务,通常用于提高网站、应用、数据库或其他服务的性能和可用性,负载均衡是高可用网络架构的关键组件。 没有负载均衡的架构 有负载均衡的架构 为什么要负载均衡 配置再强的服务器都有服务上限,当单台的服务器无法支持所有用户请求的时候就扩充机器到到几台、几十台甚至更多来提供服务,这个时候需要我们合理的把用户请求分发到各个服务器,这就是负载均衡。 负载均衡要理解最重要的一点,我这里用了“合理的分发”而不是平均分发,因为负载均衡并不是简简单单的均分流量,我们需要考虑到不同的服务器硬件配置、网络情况来合理的分配分配流量以达到各个服务器均不超载、合理利用

回忆人人车用户端架构演进

最近入职了新的公司,新公司当前的技术架构和人人车当年的架构演进的过程很像,我尽量回忆了下当时在人人车的记忆,整理本文并在新公司内部做了分享。虽然离开人人车已经5年了,但是人人车技术团队对我不管是技术上还是作为程序员的基本素质上的影响都是终身受益的,感谢人人车公司、感谢当时的技术团队及每一位成员。 人人车介绍 人人车是二手车 C2C 模式首创者,于 2014 年 7 月上线,2017年月销数万台。 起步 — 能用就行 LNMP一键安装(CI框架) Redis缓存 Solr搜索 V0.1架构 业务高速发展 线下团队爆炸性的增长,销售、评估师、客服人员等都增长不止一个量级 车辆数、订单量、