mysql sphfiks_使用sphinx索引mysql数据
数据库表如下
mysql> select * from tb_account;
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | ciaos | 3 |
| 2 | stone | 6 |
+----+-------+------+
安装sphinx
yum install sphinx libsphinxclient-devel
配置sphinx代替mysql全文索引(/etc/sphinx/sphinx.conf)(详细配置可参照 sphinx 配置文件全解析)
source account_src
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =
sql_db = test
sql_port = 3306
sql_query_pre = SET NAMES utf8
sql_query = \
SELECT * \
FROM tb_account
#sql_attr_uint = idx_id
sql_field_string = name
sql_attr_uint = age
}
index account_idx
{
source = account_src
path = /var/lib/sphinx/account_src
docinfo = extern
charset_type = utf-8
}
indexer
{
mem_limit = 32M
}
searchd
{
listen = 127.0.0.1:9312
listen = 9306:mysql41
log = /var/log/sphinx/searchd.log
query_log = /var/log/sphinx/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinx/searchd.pid
max_matches = 1000
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = /var/lib/sphinx
}
创建全量索引
indexer --config /etc/sphinx/sphinx.conf --all
启动后台搜索服务
searchd --config /etc/sphinx/sphinx.conf
可设置crontab定期构建索引
indexer --config /etc/sphinx/sphinx.conf --rotate account_idx
测试(自带search工具已不可用,可参照这里),所以需要源码安装sphinx的php扩展
wget https://pecl.php.net/get/sphinx-1.3.3.tgz
phpize && ./configure && make &&make install<?php $s = newSphinxClient;$s->setServer("localhost", 9312);$s->setMatchMode(SPH_MATCH_ANY);$s->setMaxQueryTime(3);$result = $s->query("stone");var_dump($result);?>
运行php test.php
array(10) {
["error"]=>
string(0) ""
["warning"]=>
string(0) ""
["status"]=>
int(0)
["fields"]=>
array(1) {
[0]=>
string(4) "name"
}
["attrs"]=>
array(2) {
["name"]=>
int(7)
["age"]=>
int(1)
}
["matches"]=>
array(1) {
[2]=>
array(2) {
["weight"]=>
int(1)
["attrs"]=>
array(2) {
["name"]=>
string(5) "stone"
["age"]=>
int(6)
}
}
}
["total"]=>
int(1)
["total_found"]=>
int(1)
["time"]=>
float(0)
["words"]=>
array(1) {
["stone"]=>
array(2) {
["docs"]=>
int(1)
["hits"]=>
int(1)
}
}
}
mysql sphfiks_使用sphinx索引mysql数据相关推荐
- mysql在线上建索引,mysql 5.6在线DDL建索引测试
基本信息: mysql版本: (product)root@localhost [(none)]> select @@version; +------------+ | @@version | ...
- mysql什么是覆盖索引,MySQL中的覆盖索引
索引覆盖 Extra字段显示Using index,索引处取得的数据即是要求的数据,则不会再回数据文件再查询,直接返回了. explain select id from account where i ...
- MySQL时间查询不走索引,MySQL带时间字段的范围查询不走索引了?
今天群里抛出了个乍看之下很迷的问题: 看到问题的第一瞬间,我想这是什么原理,比较方向的修改就能引起索引失效了?于是我自己先试了一下. 环境:MySQL 5.7.25 1. 创建测试表 我先整了个32万 ...
- MySQL深度剖析之索引专题(2021)
9.1 为什么需要使用索引 第一:减少了MySQL需要扫描的数据量,尤其是全表扫描 第二:随机IO变成顺序IO,提升查询速度 可以快速匹配where子句.排序和分组也可以使用索引,匹配原则最左匹配.特 ...
- mysql json类型数组索引_MySQL JSON 类型数据操作
1.Java 中动态扩展字段,会导致数据库表被锁,在MySQL 5.7.8版本之前,因为MySQL不能直接操作JSON类型数据,可以将一个字段设定成varchar类型,里面存放JSON格式数据,这样在 ...
- mysql索引排序算法_MySQL中利用索引对数据进行排序的基础教程
MySQL中,有两种方式生成有序结果集:一是使用filesort,二是按索引顺序扫描.利用索引进行排序操作是非常快的,而且可以利用同一索引同时进行查找和排序操作.当索引的顺序与ORDER BY中的列顺 ...
- solr5.5索引mysql数据(新手总结)
一 solr5.5环境部署到Eclipse(luna版) solr部署参见:http://blog.csdn.net/csmnjk/article/details/64121765 二 Ik分词器设置 ...
- MySql索引查询优化 千万级数据普通查询和建立索引后数据查询耗时对比
前言 索引:拿汉语字典的目录页(索引)打比方,我们可以按拼音.笔画.偏旁部首等排序的目录(索引)快速查找到需要的字. 索引分单列索引和组合索引. 单列索引,即一个索引只包含单个列,一个表可以有多个单列 ...
- 【MySQL】InnoDB行格式、数据页结构以及索引底层原理分析
目录 一.MySQL架构图 二.InnoDB数据页结构 2.1 局部性原理 2.2 InnoDB的数据页格式 三.InnoDB的行格式 3.1 Compact行格式 3.1.1 变长字段长度列表 3. ...
最新文章
- Create Custom Instruments
- C语言易错题集 第三部
- 表达提交返回信息_盘锦市2020年义务教育阶段招生入学信息服务平台家长填报指南...
- java 内部类异常_Java笔记(三 内部类、异常、编程规范)
- Java教程:SpringBoot常用配置
- 不能执行已经释放掉的Script代码!(已解决)
- Linux安装配置Redis CentOS 7 下安装Redis
- 【qduoj - 纳新题】凑数题(恰好装满类0-1背包 或 母函数)
- 网页不显示样式的解决方向之一
- 代码的自动生成...
- 51单片机 - 红外遥控时钟
- 大一新生计算机课word知识,大一计算机结业论文
- 那些值得我们用心体会的惊艳歌词
- 2020年10月 Hacktoberfest 纪念版T恤还是种树
- 英语语音篇 - 自然拼读大全
- Java毕业设计-流浪动物救助系统
- 五金行业:强行业性的进销存系统具体看三项
- 【初识C语言】从头到尾了解C语言这一篇足矣
- 内存大计算机运行就快吗,提高电脑内存的运行速度的方法你会吗
- java娘_初识java这个小姑娘(二)