索引

Mysql索引查询失效的情况

我的未来我决定 提交于 2020-02-14 12:14:54
首先,复习一下索引的创建: 普通的索引的创建: CREATE INDEX (自定义)索引名 ON 数据表(字段); 复合索引的创建: CREATE INDEX (自定义)索引名 ON 数据表(字段,字段,。。。); 删除索引:DROP INDEX 索引名; 以下通过explain显示出mysql执行的字段内容: id: SELECT 查询的标识符. 每个 SELECT 都会自动分配一个唯一的标识符. select_type: SELECT 查询的类型. table: 查询的是哪个表 partitions: 匹配的分区 type: join 类型 possible_keys: 此次查询中可能选用的索引 key: 此次查询中确切使用到的索引. ref: 哪个字段或常数与 key 一起被使用 rows: 显示此查询一共扫描了多少行. 这个是一个估计值. filtered: 表示此查询条件所过滤的数据的百分比 extra: 额外的信息 索引查询失效的几个情况: 1、like 以%开头,索引无效;当like前缀没有%,后缀有%时,索引有效。 2、or语句前后没有同时使用索引。当or左右查询字段只有一个是索引,该索引失效,只有当or左右查询字段均为索引时,才会生效 3、组合索引,不是使用第一列索引,索引失效。 4、数据类型出现隐式转化。如varchar不加单引号的话可能会自动转换为int型

MySQL 常见引擎总结

人走茶凉 提交于 2020-02-14 08:03:55
MySQL 引擎 1.InnoDB存储引擎 InnoDB给MySQL的表提供了事 务处理、回滚、崩溃修复能力 和多版本并发控制的事务安全。 InnoDB存储引擎总支持AUTO_INCREMENT。自动增长列的值不能为空,并且值必须唯一。MySQL中规定自增列必须为主键。 InnoDB还支持外键(FOREIGN KEY)。当删除、更新父表中的某条信息时,子表也必须有相应的改变,这是数据库的参照完整性规则。 nnoDB中,创建的表的表结构存储在.frm文件中(我觉得是frame的缩写吧)。数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。 InnoDB的优势在于提供了良好的事务处理、崩溃修复能力和并发控制。缺点是读写效率较差,占用的数据空间相对较大 InnoDB:在mysql5.6版本以上被作为默认引擎,并且加入了行及锁定与外键约束。 所以以下是使用InnoDB最好的选择: 1.更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。 2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。 3.自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。 4.外键约束。MySQL支持外键的存储引擎只有InnoDB。 5.支持自动增加列AUTO_INCREMENT属性。 2

Elasticsearch 搜索引擎

一曲冷凌霜 提交于 2020-02-14 03:06:33
1. 搜索结果中的一些词的含义 took:整个搜索请求花费了多少毫秒; hits.total:本次搜索,返回了几条结果; hits.max_score:本次搜索的所有结果中,最大的相关度分数是多少,每一条document对于search的相关度,越相关,_score分数越大,排位越靠前; hits.hits:默认查询前10条数据,完整数据,_score降序排序; shards:shards fail的条件(primary和replica全部挂掉),不影响其他shard。默认情况下来说,一个搜索请求,会打到一个index的所有primary shard上去,每个primary shard都可能会有一个或多个replic shard,所以请求也可以到primary shard的其中一个replica shard上去; timeout:默认无timeout,latency平衡completeness,手动指定timeout,timeout查询执行机制; GET /_search?timeout=10m timeout查询执行机制指每个shard在timeout时间内,将搜索的部分数据(也可以是全部数据)直接返回给client程序,而不用等到所有的查询结果都查询出来再返回; 2. multi-index和multi-type搜索模式 /_search:所有索引

Lucene简介

微笑、不失礼 提交于 2020-02-14 00:04:47
Lucene是一个开源的全文检索引擎工具包,最初由Doug Cutting开发。早在1997年,资深全文检索专家 Doug Cutting用一个周末时间,使用Java语言创作了一个文本搜索的开源函数库,目的是为各种中小型应用软件加入全文搜索功能,不久以后,Lucene诞生了,2000年Lucene称为Apache开源社区的一个子项目。随着Lucene被人们熟知,越来越多的用户和研发人员加入其中,完善并壮大项目的发展,Lucene已成为最受欢迎的具有完整的查询引擎和索引引擎的全文检索库。 Lucene从问世之后,引发了开源社区的巨大反响,程序员们不仅使用它构建全文检索应用,而且将之集成到各种系统软件中去,除此之外还用来构建Web应用。维基百科用Lucene建立了一个站内的强大搜索功能,用以检索站内数以千万的词条。IBM的商业软件Web Sphere也采用了Lucene作为全文索引引擎。Lucene以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用。Lucene的优点主要有以下3点: 1.稳定,索引性能高 现在硬盘上每小时能够索引150GB以上的数据。 对内存的要求小,只需要1MB的对内存。 增量索引和批量索引一样快 索引的大小约为索引文本大小的20%~30%。 2.高效、准确、高性能的搜索算法 搜索排名———最好的结果显示在最前面。 许多强大的查询类型:短语查询

视图&索引&序列

笑着哭i 提交于 2020-02-14 00:04:32
  视图是一个虚拟的表,它在物理上并不存在。视图可以把表或其它视图的数据按照一定的条件组合起来,所以可以把它看成一个存储的查询。 视图并不包含数据,它只是从基表中读取数据。 注意:   如果视图中包含了表中的所有特殊段(有约束的段,主键外键段...)则通过视图可以将数据插入到基表中并更新基表的数据!!! 视图特点   着重于特定数据 让用户着重于他们感兴趣的特定数据和所负责的特定任务。   简化数据操作 将经常使用的连接、选择、投影等定义为视图,可以简化数据操作。   自定义数据 允许用户以不同的方式查看数据。   组合分区数据 可以将来自不同表的数据看成一个结果表。 语法: create view view_name as select...         创建Software Designing系的学生学号,姓名视图       修改视图,增加学生的性别,年龄和所在系信息 语法: create or replace view view_name as select....         删除视图BugsBug 语法: drop view view_name         创建索引 语法: create index index_name on Table(segment) [ tablespace tablespace_name] (1)当定义表时用关键字PRIMARY

lucene实现初级搜索引擎

偶尔善良 提交于 2020-02-14 00:00:34
一、系统设计 搜索引擎项目代码主要分为三个部分,第一部分是构建索引,全文检索;第二部分是输入问题,对问题进行分词、提取关键词、关键词扩展;第三部分是将搜索结果输出到GUI图形用户界面。 二、搜索引擎 搜索引擎的工作流程可以简化归结为以下四个步骤: (1)网上抓取网页 (2)建立索引数据库 (3)在索引数据库中搜索 (4)对搜索结果进行处理和排序 三、全文检索 1. 什么是全文检索? 全文检索是一种将文件中所有文本与检索项匹配的文字资料检索方法。 2. 全文检索流程 全文检索大体分两个过程,索引创建 (Indexing) 和搜索索引 (Search) 。 ①索引创建:从结构化和非结构化数据提取信息,创建索引的过程。 ②搜索索引:得到用户的查询请求,搜索创建的索引,然后返回结果。 四、利用 Lucene 实现索引和搜索 1. 简介 Lucene是一个高性能,易于扩展的IR(Information Retrieval)Java类库,可以利用其中的Java类轻松地在应用程序中增加索引和搜索功能。Lucene完全用Java实现,具有良好的跨平台性,是Apache Jakarta项目中一个子项目。 2.lucene 架构图 Lucene的架构图如下图4.1所示: 图4.1Lucene的架构图 3. Lucene 的核心类 Lucene的核心的索引类简介如下: ① IndexWriter 类

Lucene7.2.1系列(一)快速入门

烈酒焚心 提交于 2020-02-13 23:56:54
系列文章: Lucene系列(一)快速入门 Lucene系列(二)luke使用及索引文档的基本操作 Lucene系列(三)查询及高亮 Lucene是什么? Lucene 在维基百科的定义 Lucene是一套用于 全文检索和搜索 的开放源代码程序库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程序接口,能够做全文索引和搜索,在Java开发环境里Lucene是一个成熟的免费开放源代码工具;就其本身而论, Lucene是现在并且是这几年,最受欢迎的免费Java信息检索程序库 。 另外,Lucene不提供爬虫功能,如果需要获取内容需要自己建立爬虫应用。 Lucene只做索引和搜索工作。 Lucene 官网 http://lucene.apache.org/ 打开Luncene官网你会发现Lucene版本更新的太快了,现在最新的版本已经是7.2.1。不过这也变相说明了Luncene这个开源库的火爆。 Lucene 和 solr 我想提到Lucene,不得不提solr了。 很多刚接触Lucene和Solr的人都会问这个明显的问题: 我应该使用Lucene还是Solr? 答案很简单:如果你问自己这个问题,在99%的情况下,你想使用的是Solr. 形象的来说Solr和Lucene之间关系的方式是汽车及其引擎。 你不能驾驶一台发动机,但可以开一辆汽车。 同样,

学习笔记(二)--Lucene简介

…衆ロ難τιáo~ 提交于 2020-02-13 23:56:15
Lucene简介 最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。 是Apache的子项目,网址:http://lucene.apache.org/ Lucene用途 为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。 Lucene适用场景 在应用中为数据库中的数据提供全文检索实现。 开发独立的搜索引擎服务、系统 Lucene的特性 稳定、索引性能高 每小时能够索引150GB以上的数据。 对内存的要求小——只需要1MB的堆内存 增量索引和批量索引一样快。 索引的大小约为索引文本大小的20%~30%。 高效、准确、高性能的搜索算法 良好的搜索排序。 强大的查询方式支持:短语查询、通配符查询、临近查询、范围查询等。 支持字段搜索(如标题、作者、内容)。 可根据任意字段排序 支持多个索引查询结果合并 支持更新操作和查询操作同时进行 支持高亮、join、分组结果功能 速度快 可扩展排序模块,内置包含向量空间模型、BM25模型可选 可配置存储引擎 跨平台 纯java编写。 作为Apache开源许可下的开源项目

Lucene介绍

冷暖自知 提交于 2020-02-13 23:55:39
学习目标: 明白lucene是什么,用途、特性 明白lucene的使用场景 理解lucene的架构 会集成lucene到应用中 Lucene简介 最受欢迎的java开源全文搜索引擎开发工具包。 提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。 是Apache的子项目,网址: http://lucene.apache.org/ Lucene用途 为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。 Lucene适用场景 在应用中为数据库中的数据提供全文检索实现。 开发独立的搜索引擎服务、系统 Lucene特性 1、稳定、索引性能高 每小时能够索引150GB以上的数据。 对内存的要求小——只需要1MB的堆内存 增量索引和批量索引一样快。 索引的大小约为索引文本大小的20%~30%。 2、高效、准确、高性能的搜索算法 良好的搜索排序。 强大的查询方式支持:短语查询、通配符查询、临近查询、范围查询等。 支持字段搜索(如标题、作者、内容)。 可根据任意字段排序 支持多个索引查询结果合并 支持更新操作和查询操作同时进行 支持高亮、join、分组结果功能 速度快

Lucene简单介绍

百般思念 提交于 2020-02-13 23:54:46
【2016.6.11】以前写的笔记,拿出来放到博客里面~ 相关软件: Solr, IK Analyzer, Luke, Nutch;Tomcat; 1.是什么: Lucene是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包; 为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文 检索引擎; 2.主要应用: 对句子进行分词,从而实现自然语言分词后提取关键词并且进行拓展,再送入搜索引擎进行查询,提高精准度; 对数据库中的文档简历索引,实现快速的查找; 3.环境: 用java开发,很方便调用jar包; 4.具体类: org.apache.lucene.analysis;语言分析器,主要用于分词; 5.相关的开源类库: IK Analyzer 6.Lucene的开源企业搜索平台: Solr: Solr是用Java编写、运行在Servlet容器(如Apache Tomcat或Jetty)的一个独立的全文搜索服务器; Solr是高度可扩展的,并提供了分布式搜索和索引复制; 7.Nutch: 是一个开源的java实现的web 爬虫; 主要用于收集网页数据然后进行分析,建立索引等,底层使用Hadoop进行分布式计算与存储,索引使用Solr分布式索引框架; 依赖Hadoop的数据结构,适合批处理