全文索引

Lucene索引库的维护

别等时光非礼了梦想. 提交于 2019-11-29 23:24:27
索引库的添加 Field域的属性 Field类 数据类型 Analyzed是否分析 Indexed是否索引 Stored是否存储 说明 StringField(FieldName, FieldValue,Store.YES)) 字符串 N Y Y或N 这个Field用来构建一个字符串Field,但是不会进行分析,会将整个串存储在索引中,比如(订单号,姓名等)是否存储在文档中用Store.YES或Store.NO决定 LongPoint(String name, long... point) Long型 Y Y N 可以使用LongPoint、IntPoint等类型存储数值类型的数据。让数值类型可以进行索引。但是不能存储数据,如果想存储数据还需要使用StoredField。 StoredField(FieldName, FieldValue) 重载方法,支持多种类型 N N Y 这个Field用来构建不同类型Field不分析,不索引,但要Field存储在文档中 TextField(FieldName, FieldValue, Store.NO)或TextField(FieldName, reader) 字符串或流 Y Y Y或N 如果是一个Reader, lucene猜测内容比较多,会采用Unstored的策略. 是否分析 :是否对域的内容进行分词处理。前提是我们要对域的内容进行查询

mysql全文索引:fulltext

拥有回忆 提交于 2019-11-29 21:32:27
fulltext全文索引 要使用全文索引,不仅需要把某个字段的索引类型设置为fulltext,还需要修改mysql配置文件: [mysqld] ft_wordlist_charset #表示词典的字符集 ft_wordlist_file #词表文件,每行一个词及其词频 ft_stopword_file #过滤掉不索引的词表,一行一个 ft_min_word_len #加入索引的词的最小长度,默认为4,为了支持中文单字故可设置为2 如果创建好全文索引之后,我们的表有问题,可以修复一下: repair table 表名称 quick SQL中怎么查询? select * from product where match(name) against('php') limit 0,20; 匹配name字段,这个字段的索引必须是fulltext。 这就是mysql中全文搜索的简单介绍。注意这只适合数据量很小的项目。 实际开发中,推荐使用第三方如 Sphinx(中文版coreseek)或者ElasticSearch mysql的全文索引full text和sphinx的区别 1)sphinx可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索 2)sphinx 是一个独立的服务器,具有很多 mysql自身不具备的扩展功能,性能更高,更好的缓解数据库的压力等 来源:

数据库知识梳理——innoDB 与 MyISAM 引擎区别

[亡魂溺海] 提交于 2019-11-29 19:30:35
MyISAM存储: 如果表对事务要求不高,同时是以查询和添加为主的,我们考虑使用myisam存储引擎,比如bbs 中的 发帖表,回复表,还有批量添加MyISAM效率高 INNODB 存储: 对事务要求高,保存的数据都是重要数据,我们建议使用INNODB,比如订单表,账号表。 【面试重点】MyISAM 和 INNODB的区别? 1. 事务安全(MyISAM不支持事务,INNODB支持事务) 2. 外键 MyISAM 不支持外键, INNODB支持外键. 3. 锁机制(MyISAM时表锁,innodb是行锁) 4. 查询和添加速度(MyISAM批量插入速度快) 5. 支持全文索引(MyISAM支持全文索引,INNODB不支持全文索引) 6.MyISAM内存空间使用率比InnoDB低 来源: https://blog.csdn.net/qq_38905818/article/details/100899326

Mysql索引

走远了吗. 提交于 2019-11-29 10:12:50
Mysql 索引 A 、索引的基本操作 1 、概念 1 )、查看索引 show index from 数据库表名 2 )、 alter table 数据库表 add index 索引名称 ( 数据库表字段名称 ) 2 、索引类型: 1 )、 PRIMARY KEY (主键索引) ALTER TABLE table_name ADD PRIMARY KEY ( column ) 2 )、 UNIQUE( 唯一索引 ) ALTER TABLE table_name ADD UNIQUE (column) 3 )、 INDEX( 普通索引 ) ALTER TABLE table_name ADD INDEX index_name ( column ) 4 )、 FULLTEXT( 全文索引 ) ALTER TABLE table_name ADD FULLTEXT ( column ) 5 )、多列索引 ALTER TABLE table_name ADD INDEX index_name ( column1, column2, column3 ) 3 、操作 1). 普通索引。 这是最基本的索引,它没有任何限制。它有以下几种创建方式: ( 1 )创建索引: CREATE INDEX indexName ON tableName(tableColumns(length)); 如果是

利用Lucene创建索引

我们两清 提交于 2019-11-29 08:08:07
利用Lucene的IndexWriter建立索引(详解) 需要lucene-analyzers-common-4.5.1.jar以上 /* * 建立索引,然后把建立后的文档添加到索引中去 * 提示先使用Document和Field把Field加入到Document中去, * 接着把Document建立成为一个索引 * */ package comThree; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexWriter; public class BookIndex{ //创建索引的目录 private String INDEX_PATH = "E:\\Lucene项目\\索引目录"; Document bookdoc1 = null; public BookIndex(){ bookdoc1 = new Document(); System.out.println("开始创建书的Field字段---------->

ELK搭建————elasticsearch7.3.0安装

蓝咒 提交于 2019-11-29 06:42:30
题注: 该教程是在虚拟机创建完毕的情况下实践的,关于如何创建虚拟机,欢迎访问我的博客《 VMware创建Centos7虚拟机并配置静态IP 》 1、elasticsearch简介: Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。 无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。 Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。 Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它: 分布式的实时文件存储,每个字段都被索引并可被搜索; 分布式的实时分析搜索引擎; 可以扩展到上百台服务器,处理PB级结构化或非结构化数据; 而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。 上手Elasticsearch非常容易。它提供了许多合理的缺省值

mysql索引

会有一股神秘感。 提交于 2019-11-28 18:22:06
/* 所有MySQL列类型可以被索引。根据存储引擎定义每个表的最大索引数和最大索引长度。 所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎有更高的限制。 索引的存储类型目前只有两种(btree和hash),具体和存储引擎模式相关: MyISAM btree InnoDB btree MEMORY/Heap hash,btree 默认情况MEMORY/Heap存储引擎使用hash索引 MySQL的btree索引和hash索引的区别 hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像btree(B-Tree)索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 hash 索引的查询效率要远高于 btree(B-Tree) 索引。 虽然 hash 索引效率高,但是 hash 索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些。 (1)hash 索引仅仅能满足=,<=>,IN,IS NULL或者IS NOT NULL查询,不能使用范围查询。 由于 hash 索引比较的是进行 hash 运算之后的 hash 值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的 hash 算法处理之后的 hash 值的大小关系,并不能保证和hash运算前完全一样。 (2)hash 索引无法被用来避免数据的排序操作

MySQL优化(超完整版)(一)

我的梦境 提交于 2019-11-28 18:05:40
一、 MySQL的优化   前言 :     MySQL数据库的优化模块:       - 数据库的设计—三大范式       - 数据库的索引:唯一索引、主键索引、聚合索引、复合索引、默认索引       - SQL优化       - 分库分表       - 读写分离:提升IO性能       - 存储过程优化       - 对MySQL配置进行优化(my.ini)       - 定时清理碎片 1. 数据库的设计 (1) 什么是三大范式?     为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。三大范式包括:     - 1NF :属性的原子性,要求属性具有原子性,不可分解。     - 2NF :对记录的唯一性,表中记录是唯一的(通常通过主键来实现)。     - 3NF :是对字段冗余性的约束,要求字段没有冗余。 (2) 1NF -- 案例 create table `user`( id int, name varchar(10), address varchar(10) ); insert into `user` values(1,’zs’,’上海市浦东新区’); 此时这里就针对address这个字段,有了可分割性,可将将address分为:-市-区。 此时表的设计就不遵循1NF。 (3) 2NF -- 案例

自定义中文全文索引

旧街凉风 提交于 2019-11-28 05:32:22
自定义中文全文索引 一、中文分词插件 1、分词组件的调整 2、分词测试 二、样例数据准备 三、通过中文全文分词组件创建节点索引 四、中文分词索引查询 五、总结 一、中文分词插件 NEO4J中文全文索引,分词组件使用IKAnalyzer。为了支持高版本LUCENE,IKAnalyzer需要做一些调整。 IKAnalyzer-3.0 旧版本实现参考 ELASTICSEARCH-IKAnlyzer 高版本实现参考 1、分词组件的调整 调整之后的分词组件 casia.isiteam.zdr.wltea // 调整之后的实现 public final class IKAnalyzer extends Analyzer { // 默认细粒度切分 true-智能切分 false-细粒度切分 private Configuration configuration = new Configuration(false); /** * IK分词器Lucene Analyzer接口实现类 * <p> * 默认细粒度切分算法 */ public IKAnalyzer() { } /** * IK分词器Lucene Analyzer接口实现类 * * @param configuration IK配置 */ public IKAnalyzer(Configuration configuration) {

基于mysql全文索引的深入理解

帅比萌擦擦* 提交于 2019-11-27 09:40:20
前言:本文简单讲述全文索引的应用实例,MYSQL演示版本5.5.24。 Q:全文索引适用于什么场合? A:全文索引是目前实现大数据搜索的关键技术。 至于更详细的介绍请自行百度,本文不再阐述。 -------------------------------------------------------------------------------- 一、如何设置? 如图点击结尾处的{全文搜索}即可设置全文索引,不同MYSQL版本名字可能不同。 二、设置条件 1.表的存储引擎是MyISAM,默认存储引擎InnoDB不支持全文索引(新版本MYSQL5.6的InnoDB支持全文索引) 2.字段类型:char、varchar和text 三、配置 my.ini配置文件中添加 # MySQL全文索引查询关键词最小长度限制 [mysqld] ft_min_word_len = 1 保存后重启MYSQL,执行SQL语句 复制代码 代码如下: SHOW VARIABLES 查看ft_min_word_len是否设置成功,如果没设置成功请确保 1.确认my.ini正确配置,注意不要搞错my.ini的位置 2.确认mysql已经重启,实在不行重启电脑 其他相关配置请自行百度。 注: 重新设置配置后,已经设置的索引需要重新设置生成索引 四、SQL语法 首先生成temp表 复制代码 代码如下: