数据检索

springboot检索之Elasticsearch简介

╄→гoц情女王★ 提交于 2020-02-11 17:28:09
1、elasticsearch安装 还是利用之前安装的docker进行安装。 sudo docker pull elasticsearch:2.4.6 sudo docker run --name elasticsearch01 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9200:9200 -p 9300:9300 -d elasticsearch:2.4.6 浏览器测试: 证明安装成功。 2、我们要关注的:索引、类型、文档、属性 我们选择idea中的tools--test resful web service,往ES中添加相应数据。 发送的必须是put请求,Host是系统ip地址:9200,path是/megacorp/employee/1,在text中带上要发送的json数据,点击运行之后:在response中: 看到类型、索引、id、版本 等信息。我们在按照刚才操作再添加两条:/megacorp/employee/2,/megacorp/employee/3 接下来我们来获取文档: 响应给我们/megacorp/employee/1中存放的信息。 可以通过发送head请求,响应为200说明有这个数据: 发送delete可以删除某条数据: 更新的话,修改数据后再使用Put请求即可。 也可以输入_search查询所有记录: 也可根据条件查询:

数据库的索引和锁

荒凉一梦 提交于 2020-02-09 20:10:34
一、索引 在之前,我对索引有以下的认知: 索引可以加快数据库的检索速度 表经常进行 INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、删除、修改等维护任务的速度。 -索引需要占物理和数据空间。 了解过索引的最左匹配原则 知道索引的分类:聚集索引和非聚集索引 Mysql支持Hash索引和B+树索引两种 看起来好像啥都知道,但面试让你说的时候可能就GG了: 使用索引为什么可以加快数据库的检索速度啊? 为什么说索引会降低插入、删除、修改等维护任务的速度。 索引的最左匹配原则指的是什么? Hash索引和B+树索引有什么区别?主流的使用哪一个比较多?InnoDB存储都支持吗? 聚集索引和非聚集索引有什么区别? … 1.1聊聊索引的基础知识 首先Mysql的基本存储结构是页(记录都存在页里边): 各个数据页可以组成一个双向链表 而每个数据页中的记录又可以组成一个单向链表 每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录 以其他列(非主键)作为搜索条件:只能从最小记录开始依次遍历单链表中的每条记录。 所以说,如果我们写 select*fromuserwhereusername='Java3y’这样没有进行任何优化的sql语句

Lucene(全文检索)

落爺英雄遲暮 提交于 2020-02-08 03:10:37
Lucene 数据分类 非结构化数据查询方法 Lucene实现全文检索 分析器的使用 查询索引 索引库的维护 数据分类 结构化数据:指具有固定格式或有限长度的数据(例如数据库,元数据等) 非结构化数据:指不定长或无固定格式的数据(例如邮件,word文档等) 非结构化数据查询方法 顺序扫描法 从头到尾进行扫描,找到匹配的文件 全文检索 先建立索引,然后对索引进行搜索 Lucene实现全文检索 索引和搜索流程图 创建索引 获得原始文档 创建文档对象 我们可以将磁盘上的一个文件当成一个document,Document中包括一些Field(file_name文件名称、file_path文件路径、file_size文件大小、file_content文件内容) 分析文档 将原始内容创建为包含域(Field)的文档(document),需要再对域中的内容进行分析,分析的过程是经过对原始文档提取单词、将字母转为小写、去除标点符号、去除停用词等过程生成最终的语汇单元,可以将语汇单元理解为一个一个的单词。 创建索引( 倒排索引结构 ) 对所有文档分析得出的语汇单元进行索引,索引的目的是为了搜索,最终要实现只搜索被索引的语汇单元从而找到Document(文档) 创建索引代码 分析器的使用 Lucene 自带分词器 StandardAnalyzer:单字分词 SmartChineseAnalyzer

MySQL(十二)游标和触发器

纵然是瞬间 提交于 2020-02-01 08:24:57
一、游标 定义: 存储在MySQL服务器上的数据库查询,是一种被select语句检索出来的结果集。 作用: 方便在检索出来的结果集中前进或后退一行或多行。 游标主要用于交互式应用;MySQL中的游标只能用于存储过程(和函数)。 1、创建游标 游标使用declare语句创建;declare命名游标,并定义响应的select语句,根据需要带where和其他子句;例如: create procedure processorders() begin declare ordernumbers CURSOR for select order_num from orders; end; 这个存储过程中,declare定义和命名了游标ordernumbers,存储过程处理完成后,游标消失(因为它局限于存储过程内)。 2、打开和关闭游标 游标使用open cursor语句来打开,例如: open ordernumbers; 在处理open语句时执行查询,存储检索出的数据以供浏览和滚动; 游标处理完成时,使用close语句关闭,例如: close ordernumbers; close释放游标使用的所有内部内存和资源,因此在每个游标不在需要时都应该关闭。 PS: 一个游标关闭后,如果没有重新打开,则不能使用;但如果该游标被声明过,则不需要再次声明,用open语句打开使用即可。 如果不明确游标是否关闭

Lucene、Solr、ElasticSearch、hibernate-search四部曲

纵然是瞬间 提交于 2020-01-31 14:49:14
【前言】 从前年的时候,我都在心里有个想法。我想自己做一套搜索功能。在心里我是这么想的: 1、有个资源信息库,供我查询,这个资源库可能包含各种途径生成的统一格式的数据库。 2、查询时,我先整段匹配资源库找到资源。 3、接下来就是分词了,这里我联想到了一些输入法的细胞词库。也就是说能不能按照细胞词库先匹配我们的搜索内容,然后将分词后的搜索条件进行匹配查询。 4、按照匹配度的高低进行排序。 直到昨天,在工作中刚刚得知Lucene、Solr。 【简介】 Lucene是apache软件基金会(这个咱们前面介绍过)的一个子项目,是一个开源的全文检索引擎工具包,但不是一个完全的全文检索引擎,是一个全文检索引擎的架构,提供完整的查询引擎和索引引擎,部分文本分析引擎。 Solr是一个独立的企业及搜索应用服务器,用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引。也可以通过http get提出查找请求得到XML格式的返回结果。 【Lucene 和solr】 本质区别在于: 1、Lucene是搜索库,不是独立的应用程序,而Solr是。 2、Lucene专注于搜索底层的建设,而Solr专注企业应用。 3、Lucene不负责支撑搜索服务所必须的管理,而Solr负责。 也就是说:Solr是Lucene面向企业搜索的应用扩展。也就是说,像学好Solr先学Lucene。 【问

lucent,solr,ES比较

随声附和 提交于 2020-01-31 07:57:02
| 0 什么是全文搜索 什么是全文搜索引擎? 百度百科中的定义 : 全文搜索引擎是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。 从定义中我们已经可以大致了解全文检索的思路了,为了更详细的说明,我们先从生活中的数据说起。 我们生活中的数据总体分为两种: 结构化数据 和 非结构化数据 。 结构化数据 : 指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据 : 非结构化数据又可称为全文数据,指不定长或无固定格式的数据,如邮件,word文档等。 当然有的地方还会有第三种: 半结构化数据 ,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处理。 根据两种数据分类,搜索也相应的分为两种:结构化数据搜索和非结构化数据搜索。 对于结构化数据,我们一般都是可以通过关系型数据库(mysql,oracle等)的 table 的方式存储和搜索,也可以建立索引。 对于非结构化数据,也即对全文数据的搜索主要有两种方法: 顺序扫描法 , 全文检索 。 顺序扫描 :通过文字名称也可了解到它的大概搜索方式

搜索引擎选择: Elasticsearch与Solr

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

solr和ElasticSearch(ES)的区别?

风流意气都作罢 提交于 2020-01-31 00:13:56
Solr2004年诞生 ElasticSearch 2010年诞生 ES更新 ElasticSearch简介:   ElasticSearch是一个实时的分布式的搜索引擎和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据.   它可以用于全文检索,结构化以及分析.当然你也可以将这三者进行组合.   ElasticSearch是一个建立在全文搜索引擎Apache Lucene基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全共鞥开源搜索引擎框架.   但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene.需要很多的学习了解,才能明白它是如何运行的,Lucene确实非常复杂.   ElasticSearch使用Lucene作为内部引擎,但是在使用它做全文检索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理.   当然Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行一下工作:     分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索.     实时分析的分布式搜索引擎.     可以拓展到上百台服务器上,处理PB级别的结构化和非结构化数据 这么多的功能都被继承到一台服务器上

MongoDB学习笔记(查询)

丶灬走出姿态 提交于 2020-01-28 05:03:41
1. 基本查询: 构造查询数据。 > db.test.findOne() { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35, "genda" : "male", "email" : "stephen@hotmail.com" } --多条件查询。下面的示例等同于SQL语句的where name = "stephen" and age = 35 > db.test.find({"name":"stephen","age":35}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35, "genda" : "male", "email" : "stephen@hotmail.com" } --返回指定的文档键值对。下面的示例将只是返回name和age键值对。 > db.test.find({}, {"name":1,"age":1}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35 } --指定不返回的文档键值对。下面的示例将返回除name之外的所有键值对。 > db

云计算平台(检索篇)-Elasticsearch-检索篇

痞子三分冷 提交于 2020-01-28 04:28:15
ES检索篇主要是对索引中的数据进行查询的一个过程: 1.IndexReader打开索引文件,读取并打开指向索引文件的流。 2.用户输入查询语句 3.将查询语句转换为查询对象Query对象树 4.构造Weight对象树,用于计算词的权重Term Weight,也即计算打分公式中与仅与搜索语句相关与文档无关的部分(红色部分)。 5.构造Scorer对象树,用于计算打分(TermScorer.score())。 6.在构造Scorer对象树的过程中,其叶子节点的TermScorer会将词典和倒排表从索引中读出来。 7.构造SumScorer对象树,其是为了方便合并倒排表对Scorer对象树的从新组织,它的叶子节点仍为TermScorer,包含词典和倒排表。此步将倒排表合并后得到结果文档集,并对结果文档计算打分公式中的蓝色部分。打分公式中的求和符合,并非简单的相加,而是根据子查询倒排表的合并方式(与或非)来对子查询的打分求和,计算出父查询的打分。 8.将收集的结果集合及打分返回给用户 具体过程文章已经有很多了,我引用一个博友的文章: Lucene学习总结之七:Lucene搜索过程解析(1) http://www.cnblogs.com/forfuture1978/archive/2010/04/04/1704242.html Lucene学习总结之七:Lucene搜索过程解析(2)