全文索引

全文检索引擎sphinx 与 Elasticsearch 索引速度对比

↘锁芯ラ 提交于 2019-11-27 07:20:27
sphinx的特色之一是建立索引速度快,最近转投Elasticsearch后,一直想做个对比,网上资料常见说法是10倍的差距。 测试环境 硬件:单核,2G内存的E5-2630 虚拟机 操作系统:Centos 6.5 版本 sphinx 版本:coreseek 4.1(基于sphinx 2.02) Elasticsearch 版本:2.3.1 mysql 版本:5.6 分词器(均使用默认的分词词库) mmseg:coreseek自带 ik:Elasticsearch 插件 索引数据源 数据库:mysql 数据量:46万+篇文章,约为1.6G数据 建立索引的字段:id,title,content Elasticsearch 使用插件:Elasticsearch-jdbc 2.3.1 Elasticsearch 集群设置 为了尽可能接近单机测试,Elasticsearch 仅开启一个服务节点(本地),且索引不做分片,不做副本。 测试情况 sphinx 每秒处理数据量:2.77 MB 每秒处理文档数:1277 篇 截图-sphinx Elasticsearch 每秒处理数据量:0.794 MB 每秒处理文档数:397 篇 截图-Elasticsearch(kibana 监控) 测试结论 sphinx 索引速度确实相对比较快,可能是环境的差异,未达到官方所说的10M/s 的索引速度;

关于Lucene的概念

妖精的绣舞 提交于 2019-11-27 03:36:18
1、Lucene是什么? 答:是一个 全文检索 的工具包。这是为了解决数据库 模糊查询的缺陷 而生的。 2、数据库模糊查询的缺陷是什么? 答:用户只能通过 精准的关键字 , 模糊首尾 在数据库搜索数据。一旦关键字 输入错误 一个,搜索出来的 结果差强人意 。 3、Lucene的检索方案或者方法是什么? 答:Lucene,全文检索是先 分词 , 创建索引 ,再执行 搜索 。   分词:将一段文字分成一个个单词。如 iloveyou ,分为 i、love、you 三个单词再进一步搜索 4、全文检索的应用场景。   答:电商网站中,使用模糊查询来匹配数据,会导致很多数据匹配不到。所以要用到全文检索来解决。    来源: https://www.cnblogs.com/luojack/p/11342169.html

MySQL性能优化——索引

天涯浪子 提交于 2019-11-27 02:33:01
一、MySQL中索引的语法 1. 创建索引 1. 在创建表的时候添加索引 CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); 2. 在创建表以后添加索引 ALTER TABLE my_table ADD [UNIQUE] INDEX index_name(column_name); 或者 CREATE INDEX index_name ON my_table(column_name); 注意: 1、索引需要占用磁盘空间,因此在创建索引时要考虑到磁盘空间是否足够 2、创建索引时需要对表加锁,因此实际操作中需要在业务空闲期间进行 2. 根据索引查询 具体查询: SELECT * FROM table_name WHERE column_1=column_2;(为column_1建立了索引) 或者模糊查询 SELECT * FROM table_name WHERE column_1 LIKE '%三' SELECT * FROM table_name WHERE column_1 LIKE '三%' SELECT * FROM table_name WHERE column_1 LIKE '%三%' SELECT *

Mysql 优化方案

自古美人都是妖i 提交于 2019-11-26 22:31:37
Mysql 优化方案 从 开发角度 优化mysql,让数据库效率 更高、更快 。 索引优化 查看mysql状态 通过周期性观察mysql状态优化,更有利于确定mysql性能瓶颈在哪里。 通过 show status 命令观察mysql的运行状态。其中比较主要的几个: 命令格式: show [global|session] status like 'command'; 默认是session: 当前会话;global: 全局会话。 show status like "up_time"; 查看mysql启动了多长时间 show status like 'com_ select'; 查看mysql执行select的次数 show status like 'com_ delete'; 查看mysql执行delete的次数 show status like 'com_ update'; 查看mysql执行upate的次数 show status like 'com_ insert'; 查看mysql执行insert的次数 show status like 'Thread_s running';有多少个连接正在工作 show status like 'connections';试图连接mysql的次数 show status like ' Max_used_connections'

mysql优化方案总结

可紊 提交于 2019-11-26 22:30:49
u Mysql数据库的优化技术 对mysql优化时一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] c: 分表技术(水平分割、垂直分割) d: 读写[写: update/delete/add]分离 e: 存储过程 [模块化编程,可以提高速度] f: 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ] g: mysql服务器硬件升级 h: 定时的去清除不需要的数据,定时进行碎片整理(MyISAM) u 什么样的表才是符合3NF (范式) 表的范式,是首先符合1NF, 才能满足2NF , 进一步满足3NF 1NF: 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只有数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动的满足1NF ☞ 数据库的分类 关系型数据库: mysql/oracle/db2/informix/sysbase/sql server 非关系型数据库: (特点: 面向对象或者集合) NoSql数据库: MongoDB(特点是面向文档) 2NF: 表中的记录是唯一的, 就满足2NF, 通常我们设计一个主键来实现 3NF: 即表中不要有冗余数据, 就是说,表的信息

演示一个带有全文索引表的分区交换例子

匆匆过客 提交于 2019-11-26 20:38:05
一、实验说明: 操作系统:rhel 5.4 x86 数据库:Oracle 11g R2 实验说明:该实验参照了谭老师的《让Oracle跑的更快2》中的一个案例。 二、在数据库中创建带加载数据的分区表及索引 ----------创建一个包含3个分区的分区表,分区的字段是一个时间字段,分别存放2011年、2012年和之后的数据。----- 1 SQL > create table jack_test(id int ,name varchar2 ( 60 ),created date) 2 2 partition by range(created) 3 3 ( 4 4 partition p2011 values less than(to_date( ' 2012-01-01 ' , ' yyyy-mm-dd ' )), 5 5 partition p2012 values less than(to_date( ' 2013-01-01 ' , ' yyyy-mm-dd ' )), 6 6 partition pmax values less than (maxvalue) 7 7 ); 8 9 Table created. ----------创建全文索引------------------------------------------------------------------

用示例说明全文索引的性能优势

放肆的年华 提交于 2019-11-26 20:37:48
一、实验说明: 操作系统:rhel 5.4 x86 数据库:Oracle 11g R2 二、操作步骤: 2.1、首先创建一个表t_btree,并创建B-Tree索引,索引键是object_name: 1 SQL > create table t_btree as select * from dba_objects; 2 3 Table created. 4 5 SQL > create index ind_btree on t_btree( object_name ); 6 7 Index created. 接着是执行下面的查询语句两次: 1 SQL > set linesize 150 ; 2 SQL > set autotrace on ; 3 SQL > select count ( * ) from t_btree where t_btree. object_name like ' %ObjectStreamClass% ' ; 4 5 COUNT ( * ) 6 -- -------- 7 84 8 9 10 Execution Plan 11 -- -------------------------------------------------------- 12 Plan hash value: 3266099700 13 14 -- ---------------

Apache Solr 介绍

拟墨画扇 提交于 2019-11-26 20:13:44
Apache Solr 介绍 Solr 是什么?   Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现。服务器通信使用标准的HTTP 和XML,所以如果使用Solr 了解Java 技术会有用却不是必须的要求。 Solr 主要特性有:强大的全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)的处理。而且Solr 具有高度的可扩展,支持分布搜索和索引的复制。 Lucene 是什么?   Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。   目前已经有很多应用程序的搜索功能是基于 Lucene ,比如 Eclipse 帮助系统的搜索功能。Lucene 能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。 Solr VS Lucene   Solr 与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene ,因为Solr 底层的核心技术是使用Apache Lucene 来实现的,简单的说Solr 是Lucene 的服务器化

Apache Solr 介绍(1)

旧城冷巷雨未停 提交于 2019-11-26 20:13:29
导言 说起 Apache Lucene, 可以说无人不知,无人不晓,但是说道 Apache Solr, 恐怕知道的不多。看看 Apache Solr 的说明: Solr 是一个基于 Lucene java 库的 企业级搜索服务器 ,包含 XML/HTTP , JSON API, 高亮查询结果, faceted search( 不知道该如何翻译 , 片段式搜索 ) , 缓存 ,复制还有一个 WEB 管理界面。 Solr 运行在 Servlet 容器中 。所以 Solr 和 Lucene 的本质区别有以下三点:搜索服务器,企业级和管理。 Lucene 本质上是搜索库,不是独立的应用程序,而 Solr 是。 Lucene 专注于搜索底层的建设,而 Solr 专注于企业应用。 Lucene 不负责支撑搜索服务所必须的管理,而 Solr 负责。所以说,一句话概括 Solr: Solr 是 Lucene 面向企业搜索应用的扩展 。 在本篇文章中,我们先看看 Solr 向我们承诺了什么,或者说 Solr 宣称的特性们。 无废话 Solr Solr 是一个拥有象 WebService 一样接口的独立运行的搜索服务器。你将能够通过 HTTP 协议以 XML 格式将文档放入搜索服务器 ( 这个过程叫做索引 ) ,你能够通过 HTTP 协议的 GET 来查询搜索服务器并且得到 XML 格式的结果。

lucene入门&Solr

自闭症网瘾萝莉.ら 提交于 2019-11-26 14:53:33
LUCENE 1. 学习计划 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a) 创建索引 b) 查询索引 3、配置开发环境 4、创建索引库 5、查询索引库 6、分析器的分析过程 a) 测试分析器的分词效果 b) 第三方中文分析器 7、索引库的维护 a) 添加文档 b) 删除文档 c) 修改文档 8、Lucene的高级查询Lucene的查询 a) 使用Query的子类查询 MatchAllDocsQuery TermQuery NumericRangeQuery BooleanQuery b) 使用QueryParser QueryParser MulitFieldQueryParser 2. 案例 实现一个文件的搜索功能,通过关键字搜索文件,凡是文件名或文件内容包括关键字的文件都需要找出来。还可以根据中文词语进行查询,并且需要支持多个条件查询。 本案例中的原始内容就是磁盘上的文件,如下图: 3. 需求分析 3.1. 数据库搜索 数据库中的搜索很容易实现,通常都是使用sql语句进行查询,而且能很快的得到查询结果。 为什么数据库搜索很容易? 因为数据库中的数据存储是有规律的,有行有列而且数据格式、数据长度都是固定的。 3.2. 数据分类 我们生活中的数据总体分为两种:结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库