搜索引擎调研
架构 刘宇帅 6年前 阅读量: 1461
定义
搜索引擎(search engine)是一种信息检索系统,旨在协助搜索存储在计算机系统中的信息。搜索结果一般被称为“hits“,通常以表单的形式列出。网络搜索引擎是常见、公开的一种搜索引擎,其功能为搜索互联网上储存的信息。
工作方式
搜索引擎为一组项目提供一个接口,使用户可以指定关于感兴趣的项目的标准,并让引擎找到匹配的项目。搜索查询通常表示为识别一个或多个文档kennel包含的期望概念的一组单词。有多种样式的搜索查询语法在严格性上有差异。它也可以在以前的站点中搜索搜索引擎中的名称。而一些文本搜索引擎要求用户输入由白色空格分割的两个或三个字,其他搜索引擎可以使用户能够指定整个文档,图片,声音和各种形式的自然语言。一些搜索引擎对搜索查询进行改进,以增加通过称为查询扩展的过程提供质量集合的可能性。查询理解方法可用于标准话查询语言。
基于索引的搜索引擎匹配查询指定条件的项目列表通常会排序或排名。按相关性排列项目(从最高到最低)减少查找所需信息所需的时间。概率搜索引擎根据相似性度量(每个项目和查询之间,通常以1到0,1的比例最相似)和有时受欢迎程度或权限或使用相关性反馈来评估项目。布尔搜索引擎通常只返回匹配的项目,而不考虑订单,为了提供根据一些标准快熟排序的一组匹配项目,搜索引擎通常将通过称为索引的过程来收集关于所考虑的一组项目的元数据。
索引通常需要较少的计算机存储,这就是为什么一些搜索引擎仅存储索引的信息而不是每个项目的完整内容,而是提供导航到搜索引擎结果页面中的项目的方法。或者,搜索引擎可以将每个项目的副本存储在高速缓存中,使得用户可以在索引时或为了归档目的看到该项目的状态,或者使得重复的进程更有效和更快地工作。其他类型的搜索引擎不存储索引。抓取器或蜘蛛型搜索引擎(也称为实时搜索引擎)可以在搜索查询时收集和评估项目,基于起始项目的内容(称为种子或种子URL)动态考虑附加项目互联网爬虫的情况。元搜索引擎既不存储索引也不存储缓存,而只是重新使用一个或多个其他搜索引擎的索引或结果来提供聚合的最终结果集。
类型
-
按内容
- 桌面搜索
- 联合搜索
- 人类搜索引擎
- 元搜索引擎
- 多搜索
- 搜索聚合器
- 网页搜索引擎
- 按内容
- 全文检索
- 图像搜索
- 视频搜索引擎
- 按界面
- 增量搜索
- 即时搜索
- 语义搜索
- 基于选择的搜索
- 按主题
- 书目数据库
- 企业搜索
- 医学文献检索
- 垂直搜索
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许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。