全文索引

Lucene全文检索系列(一)

核能气质少年 提交于 2020-02-29 10:04:28
1. Lucene简介 Lucene是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。Lucene以其方便使用、快速实施以及灵活性受到广泛的关注。它可以方便地嵌入到各种应用中实现针对应用的全文索引、检索功能。 2. lucene 的包结构 1、analysis对需要建立索引的文本进行分词、过滤等操作 2、standard是标准分析器 3、document提供对Document和Field的各种操作的支持。 4、index是最重要的包,用于向Lucene提供建立索引时各种操作的支持 5、queryParser提供检索时的分析支持 6、search负责检索 7、store提供对索引存储的支持 8、util提供一些常用工具类和常量类的支持 Lucene中的类主要组成如下: 1)org.apache.1ucene.analysis语言分析器,主要用于的切词Analyzer是一个抽象类,管理对文本内容的切分词规则。 2)org.apache.1uceene.document索引存储时的文档结构管理,类似于关系型数据库的表结构。 3)document包相对而言比较简单,该包下面有3个类,document相对于关系型数据库的记录对象,Field主要负责字段的管理。 4)org.apache.1ucene.index索引管理,包括索引建立、删除等。索引包是整个系统核心

MySQL使用全文索引(fulltext index)

时光总嘲笑我的痴心妄想 提交于 2020-02-28 12:39:49
1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。 不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息要随时关注官网, 1.1. 创建表的同时创建全文索引 CREATE TABLE article ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT(title, body) ) TYPE=MYISAM; 1.2.通过 alter table 的方式来添加 ALTER TABLE `student` ADD FULLTEXT INDEX ft_stu_name (`name`) #ft_stu_name是索引名,可以随便起 或者:ALTER TABLE `student` ADD FULLTEXT ft_stu_name (`name`) 1.3. 直接通过create index的方式 CREATE FULLTEXT INDEX ft_email_name ON `student` (`name`) 也可以在创建索引的时候指定索引的长度: CREATE FULLTEXT INDEX ft_email_name ON `student` (

深入理解全文索引

廉价感情. 提交于 2020-02-26 14:05:59
参考链接—— https://blog.csdn.net/weixin_33966095/article/details/89267494?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task 举一个例子,百度上你输入一个关键词,就需要检索出和这个关键词相关的文档。那么这就需要全文索引,当其数据库存储文档时,如果建立了全文索引的话,它就会对该文档进行分词处理,然后按关键词的重要程度进行排序,最后再建立一个倒排索引结构,通过这个关键词去索引和这个关键词相关联的文档id。 倒排索引中底层实现中用到的数据结构: https://blog.csdn.net/whichard/article/details/90753727?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task 来源: CSDN 作者: Kevin照墨 链接: https://blog.csdn.net/JustKian/article/details/104513612

从零开始学习MySQL全文索引

风流意气都作罢 提交于 2020-02-26 14:01:39
目录 一、为什么要用全文索引 二、什么是全文索引 三、如何创建全文索引 四、创建测试数据 五、查询-使用自然语言模式 六、查询-使用布尔模式(强大的语法) 语法 示例 七、查询-使用扩展模式 八、注意事项 一、为什么要用全文索引 传奇小说 m.xs86.com 我们在用一个东西前,得知道为什么要用它,使用全文索引无非有以下原因 like查询太慢、json字段查询太慢(车太慢了) 没时间引入ElasticSearch、Solr或者Sphinx这样的软件,或者根本就不会用(无法将五菱宏光换成兰博基尼,即使有兰博基尼也不会开) 加索引、联合索引啥的都已经慢得不行了(限速80,车顶盖都卸了也只能开到30) 为了提升一下自己的逼格(人家问你有没有开过法拉利,你说开过肯定更有气质一点) 二、什么是全文索引 简单的说,全文索引就相当于大词典中的目录,通过查询目录可以快速定位到想看的内容。 全文索引通过建立 倒排索引 来快速匹配文档(仅在mysql5.6版本以上支持) 全文索引将连续的 字母、数字和下划线 当做一个单词,分割单词一般用 空格/逗号/句号 MySQL的全文索引支持以下3种查询模式: 自然语言模式( IN NATURAL LANGUAGE MODE ) 通过MATCH AGAINST 传递某个特定的字符串来进行检索 布尔模式( IN BOOLEAN MODE ) 支持操作符,例如

lucene查询语法,适用于ELk:kibana查询

谁说我不能喝 提交于 2020-02-26 05:58:06
lucene查询语法,适用于ELk:kibana查询 Kibana在ELK中扮演着数据可视化角色,用来查询及展示数据; Elasticsearch查询采用的是luncene搜索引擎,其4过滤查询语法和lucene一致。 Kibana官方在线演示 字段搜索 Lucene支持实时数据。执行搜索时,您可以指定字段,也可以使用默认字段。字段名称和默认字段是特定于实现的。 限定字段全文搜索:field:value 精确搜索:关键字加上双引号 filed:"value" http.code:404 搜索http状态码为404的文档 字段本身是否存在 _exists_:http:返回结果中需要有http字段 _missing_:http:不能含有http字段 通配符搜索 Lucene支持单个术语内的单个和多个字符通配符搜索(不在短语查询中)。 ? 匹配单个字符 * 匹配0到多个字符 te?t,test*,te*t 注意:您不能使用*或?符号作为搜索的第一个字符。 正则表达式搜索 Lucene支持正向表达式搜索. name:/joh?n(ath[oa]n)/ 模糊搜索 quikc~ brwn~ foks~ ~:在一个单词后面加上~启用模糊搜索,可以搜到一些拼写错误的单词 first~ 这种也能匹配到 frist 还可以设置编辑距离(整数),指定需要多少相似度 cromm~1 会匹配到 from 和

实战 Lucene2.0

别等时光非礼了梦想. 提交于 2020-02-23 11:51:07
Lucene 简介 Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。 目前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能。Lucene 能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化的文本的,Lucene 就能对你的文档进行索引和搜索。比如你要对一些 HTML 文档,PDF 文档进行索引的话你就首先需要把 HTML 文档和 PDF 文档转化成文本格式的,然后将转化后的内容交给 Lucene 进行索引,然后把创建好的索引文件保存到磁盘或者内存中,最后根据用户输入的查询条件在索引文件上进行查询。不指定要索引的文档的格式也使 Lucene 能够几乎适用于所有的搜索应用程序。 图 1 表示了搜索应用程序和 Lucene 之间的关系,也反映了利用 Lucene 构建搜索应用程序的流程: 图 1. 搜索应用程序和 Lucene 之间的关系 回页首 索引和搜索 索引是现代搜索引擎的核心,建立索引的过程就是把源数据处理成非常方便查询的索引文件的过程。为什么索引这么重要呢,试想你现在要在大量的文档中搜索含有某个关键词的文档

elasticsearch--知识点

我只是一个虾纸丫 提交于 2020-02-21 17:31:18
一、elasticsearch Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。 基于lucene lucene基于倒序索引 1、倒序索引 2、正序索引 来源: https://www.cnblogs.com/jentary/p/12342034.html

全文检索引擎及工具 Lucene Solr

[亡魂溺海] 提交于 2020-02-16 03:55:22
全文检索引擎及工具 lucence lucence是一个全文检索引擎。 lucence代码级别的使用步骤大致如下: 创建文档(org.apache.lucene.document.Document),并通过Document的add方法为其添加字段(lucence.document.Field) 创建lucence.index.IndexWriter,通过addDocument或addDocuments方法添加构建好的诸多Document 通过close方法关闭IndexWriter 创建索引搜索器lucence.search.IndexSearcher,需要传入索引仓库阅读器(lucenc.index.DirectoryReader)参数 通过search方法在搜索器上执行查询,参数是ucence.search.Query对象,通过查询解析器lucene.queryparser.classic.QueryParser的实例parse(String)方法来构建一个查询,QueryParser实例可以通过new标准解析器lucene.queryparser.flexible.standard.StandardQueryParser得到 中文文本索引构建及查询示例 (以下涉及的是6.4.2版本的lucene) 对中文文本构建索引时,不能使用 StandardAnalyzer

你真的了解过Lucene吗?

一世执手 提交于 2020-02-14 20:15:02
在之前的博客中,我有写到 《ElasticSearch学习,请先看这一篇(win_Elasticsearch)》 ,在里面的第一句话,==Elasticsearch是一个基于Lucene的搜索服务。==那么对于lucene,你有什么看法?本篇对于lucene进行探讨! Lucene简介 Lucene是一个全文搜索框架,而不是应用产品。因此它并不像http://www.baidu.com/ 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 Lucene 是一种高性能、可伸缩的信息搜索(IR)库,在 2000 年开源,最初由鼎鼎大名的 Doug Cutting 开发,是基于 Java 实现的高性能的开源项目。 Lucene 采用了基于倒排表的设计原理,可以非常高效地实现文本查找,在底层采用了分段的存储模式,使它在读写时几乎完全避免了锁的出现,大大提升了读写性能。 Lucene能做什么? 要回答这个问题,先要了解lucene的本质。实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文搜索服务,告诉你你要搜索的关键词出现在哪里。 知道了这个本质,你就可以发挥想象做任何符合这个条件的事情了。你可以把站内新闻都索引了,做个资料库;你可以把一个数据库表的若干个字段索引起来,那就不用再担心因为“%like%”而锁表了

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.高效、准确、高性能的搜索算法 搜索排名———最好的结果显示在最前面。 许多强大的查询类型:短语查询