全文索引

搜索引擎选型调研文档

十年热恋 提交于 2019-12-02 18:45:26
Elasticsearch简介 * Elasticsearch是一个 实时的 分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于 全文搜索, 结构化搜索以及 分析,当然你也可以将这三者进行组合。 Elasticsearch是一个 建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。 但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。需要很多的学习了解,才能明白它是如何运行的,Lucene确实非常复杂。 Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。 当然Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行以下工作: 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。 实时分析的分布式搜索引擎。 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。 这么多的功能被集成到一台服务器上,你可以轻松地通过客户端或者任何你喜欢的程序语言与ES的RESTful API进行交流。 Elasticsearch的 上手是非常简单的。它附带了很多 非常合理的默认值

elasticsearch搜索引擎

☆樱花仙子☆ 提交于 2019-12-02 18:10:34
一,什么事倒排序索引 elaticsearch是面向文档型的,将文档序列化未JSON形式,顺序缩影的过程是已知文档,查处文档中保航的字符串,从文件到字符串的映射,但是elaticsearch是已知字符串查找文档,即建立字符串和文档的映射,这种映射被称为倒排索引。 二,elasticsearch如何使用倒排序索引完成全文检索功能 1,创建索引: 1.1 已知文档,将文档交给分词器进行分词处理,分成一个一个档次,去除标点符号和停用词等 1.2 将单词交给语言处理组件,提取词根 1.3 将单词传给索引组件,处理成字典,按照字母顺序排序,合并相同的单词,成文倒排链表 2,搜索索引: 2.1 根据用户输入的数据进行词法,语法和语言处理,提取关键字和普通单词,得到语法树 2.2 利用语法树进行索引搜索,将结果与搜索内容的相关性进行排序返回 Elasticsearch 全文检索的基本思路:对非结构化数据顺序扫描很慢,对结构化数据的搜索却相对较快(由于结构化数据有一定的结构可以采取一定的搜索算法加快速度),把我们的非结构化数据想办法弄得有一定结构,也就是将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后我们重新组织的有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引 。 全文检索大体分两个过程:1.索引创建

Lucene笔记系列(1)——Lucene的理论基础之全文检索

天大地大妈咪最大 提交于 2019-12-02 17:44:43
本系列开始学习Lucene。 在我们处理的数据当中,分为三类数据: 结构化数据:具有固定格式或限定长度的数据,如我们的数据库中的数据 非结构化数据:无固定格式、无固定长度的数据,如我们web上的文本内容等 半结构数据:如Json、XML数据。 那么我们怎么来处理这些不同类型的数据呢? 对于数据库中的结构化数据,使用SQL语句查询 对于非结构数据,我们顺序扫描、全文检索. 其中,顺序扫描就是从数据的开头的一条数据扫描到最后的一条数据。显而易见的是,这对于时间、性能都是很大的浪费。 那什么是全文检索呢? 这就是Lucene要完成的事情了。下面我们先看一张图来描述它在整个系统中所起到的作用: 对lucen上层的应用部分,我们可以看到应用手机了结构化的、半结构化的、非结构化的数据,由lucene为其建立索引文件;另一种应用则是检索,用户通过输入检索条件的关键词检索我们的索引库,然后把结果返回给用户。 那么什么是索引? 就像新华字典中的拼音检索和部首索引用来查字一样。 在lucene中也是一样,全文检索指的是某一个词在哪些文档中出现过。例如: 在上图中,“lucene”这个关键词在第1篇和第3篇文档中出现过。 “Solr”这个关键词在第1、3、5篇文档中出现过。 “hadoop”这个关键词在第3、5、7、8、9篇文档中出现过。 这里我们把整个过程称之为“ 反向索引 ”

Elasticsearch 是什么

梦想的初衷 提交于 2019-12-02 16:57:35
Elasticsearch 是什么 Elasticsearch是一个基于 Apache Lucene(TM) 的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 但是 lucene 只是一个库 是java开发的 所以你必须用java语言开发。并且 lucene 非常的复杂 你需要深入了解 lucene Elasticsearch 也是 用Java开发的是基于Lucene 开发的当为核心 实现索引和 搜索 ,它是通过 REST API 来隐藏Lucene的 复杂让全文检索更为简单 不过 Elasticsearch 不仅仅 有Lucene 的全文搜索 还可 这样说 分布式实时文件存储,每个字段都被索引并可被搜索 分布式实时分析搜索引擎 可扩展百台服务器,处理PB级结构化或非结构化数据 而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的 RESTful API 、各种语言的客户端甚至命令行与之交互。 上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它开箱即用(安装即可使用),只需很少的学习既可在生产环境中使用。 Elasticsearch在 Apache 2 license 下许可使用,可以免费下载、使用和修改。 随着你对Elasticsearch的理解加深

索引

a 夏天 提交于 2019-12-02 11:14:51
一.什么叫索引: 索引就是类似书的目录,提高检索数据的效率。 索引是系统按照某个具体的算法(哈希,散列,二叉树),将数据从全部数据里进行提取,维护成一个索引文件,然后系统在进行数据查询的时候,发现如果查询条件刚好满足索引条件,就可以从索引文件中快速的定位的数据所在位置。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 ** 二.索引类型包括: 普通索引(index) 对数据没有要求,文件很大,效率比较低,但是查询速度相对较快。 ALTER TABLE 表名字 ADD INDEX index_name ( 需要加索引的列 ) 全文索引(fulltext) 全文索引只能用于InnoDB或MyISAM表,只能为CHAR、VARCHAR、TEXT列创建,Sysman支持全文索引。MySQL5.6.后InnoDB引擎也加入了全文索引对文本的内容进行分词,因为MySQL提供了支持中文、日文和韩文的内置全文ngram解析器。 具体化 ALTER TABLE 表名 ADD FULLTEXT ( 需要加索引的列 ) 唯一索引(unique key) 唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值(null)。如果是组合索引,则列值的组合必须唯一。创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复。 ALTER TABLE 表名 ADD UNIQUE

mysql全文索引

北战南征 提交于 2019-12-02 08:10:17
原文 mysql 全文索引 概念 通过数值比较、范围过滤等就可以完成绝大多数我们需要的查询,但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较。全文索引就是为这种场景设计的。 你可能会说,用 like + % 就可以实现模糊匹配了,为什么还要全文索引? like + % 在文本比较少时是合适的,但是对于大量的文本数据检索,是不可想象的。全文索引在大量的数据面前,能比 like + % 快 N 倍,速度不是一个数量级,但是全文索引可能存在精度问题。 你可能没有注意过全文索引,不过至少应该对一种全文索引技术比较熟悉:各种的搜索引擎。虽然搜索引擎的索引对象是超大量的数据,并且通常其背后都不是关系型数据库,不过全文索引的基本原理是一样的。 版本支持 开始之前,先说一下全文索引的版本、存储引擎、数据类型的支持情况 MySQL 5.6 以前的版本,只有 MyISAM 存储引擎支持全文索引; MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引; 只有字段的数据类型为 char、varchar、text 及其系列才可以建全文索引。 测试或使用全文索引时,要先看一下自己的 MySQL 版本、存储引擎和数据类型是否支持全文索引。 mysql官方文档version:5.7 1.创建全文索引(FullText index

lucene、简介

霸气de小男生 提交于 2019-12-02 07:48:28
1.什么是lucene Lucene是一个全文搜索框架,而不是应用产品。因此它并不像http://www.baidu.com/ 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 2. lucene能做什么 •要回答这个问题,先要了解lucene的本质。实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文搜索服务,告诉你你要搜索的关键词出现在哪里。知道了这个本质,你就可以发挥想象做任何符合这个条件的事情了。你可以把站内新闻都索引了,做个资料库;你可以把一个数据库表的若干个字段索引起来,那就不用再担心因为“%like%”而锁表了;你也可以写个自己的搜索引擎…… 3. 你该不该选择lucene •下面给出一些测试数据,如果你觉得可以接受,那么可以选择。 –测试一:250万记录,300M左右文本,生成索引380M左右,800线程下平均处理时间300ms。 –测试二:37000记录,索引数据库中的两个varchar字段,索引文件2.6M,800线程下平均处理时间1.5ms。 4. lucene为什么这么快 –倒排索引 –压缩算法 –二元搜索 5. 倒排索引 –根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置

ElasticSearch概述

旧巷老猫 提交于 2019-12-02 06:19:10
ElasticSearch概述 1.介绍 **lucene问题:** 1.lucene是java开发的,对于不会java的人使用比较困难 2.lucene代码简化问题 3.分布式与高可用问题 **ElasticSearch:** 1.基于lucene的搜索服务器 2.提供一个分布式高可用多用户能力的全文检索引擎 3.基于RESTful web接口 4.java开发,但是以接口形式对外暴露 2.ElasticSearch结构 **包括三大部分:** 底层数据存储:维护索引文件,利用分布式数据切分存储,可以存在本地,也可以存在hdfs 封装lucene扩展功能:发现集群节点功能,支持各种对资源的管理 接口层:给用户提供访问接口(http协议,REST风格),用户可以通过url访问地址,通过请求方式, 对索引进行CRUD操作 来源: https://blog.csdn.net/weixin_43356218/article/details/102729285

ES

你。 提交于 2019-12-02 05:06:06
es是分布式,高性能,高可用,可伸缩的搜索和分析系统 什么是全文检索和Lucene? (1)全文检索,倒排索引 (2)lucene,就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。我们就用java开发的时候,引入lucene jar,然后基于lucene的api进行去进行开发就可以了。用lucene,我们就可以去将已有的数据建立索引,lucene会在本地磁盘上面,给我们组织索引的数据结构。另外的话,我们也可以用lucene提供的一些功能和api来针对磁盘上额 ES的优点: 自动维护数据的分布到多个节点的所有的建立,还有检索请求分布到多个节点的执行 自动维护数据的冗余副本,保证说,一些机器宕机了,不会丢失任何数据 封装了更多的高级功能,以给我们提供更多高级的支持,让我们快速的开发应用,开发更多复杂的应用,复杂的检索功能,聚合分析的功能,根据地理位置的检索 1、Elasticsearch的功能 (1)分布式的搜索引擎和数据分析引擎 搜索:百度,网站的站内搜索,IT系统的检索 数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站,最近1个月访问量排名前3的新闻版块是哪些 功能:分布式,搜索,数据分析 (2)全文检索,结构化检索,数据分析 全文检索:我想搜索商品名称包含牙膏的商品,select * from products

Apache Lucene全文检索

你。 提交于 2019-12-01 21:27:57
Lucene4.0的官网文档: http://lucene.apache.org/core/4_0_0/core/overview-summary.html 一、什么是lucene Lucene是一套用于全文检索和搜寻的开源程式库是全文检索的框架而不是产品(不像百度不同), lucene其实就做两种工作:一入一出。所谓入是写入,即将你提供的源(本质是字符串)写入索引或者将其从索引中删除;所谓出是读出,即向用户提供全文搜索服务,让用户可以通过关键词定位源。 百科是这样说的:Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。 lucene能做什么 要回答这个问题, 先要了解 lucene 的本质。 实际上 lucene 的功能很单一, 说到 底, 就是你给它若干个字符串, 然后它为你提供一个全文搜索服务, 告诉你你要 搜索的关键词出现在哪里。 知道了这个本质, 你就可以发挥想象做任何符合这个 条件的事情了。 你可以把站内新闻都索引了, 做个资料库;