数据库表如下

  1. mysql> select * from tb_account;
  2. +----+-------+------+
  3. | id | name | age |
  4. +----+-------+------+
  5. | 1 | ciaos | 3 |
  6. | 2 | stone | 6 |
  7. +----+-------+------+

安装sphinx

  1. yum install sphinx libsphinxclient-devel

配置sphinx代替mysql全文索引(/etc/sphinx/sphinx.conf)(详细配置可参照 sphinx 配置文件全解析

  1. source account_src
  2. {
  3. type = mysql
  4.  
  5. sql_host = localhost
  6. sql_user = root
  7. sql_pass =
  8. sql_db = test
  9. sql_port = 3306
  10. sql_query_pre = SET NAMES utf8
  11.  
  12. sql_query = \
  13. SELECT * \
  14. FROM tb_account
  15.  
  16. #sql_attr_uint = idx_id
  17. sql_field_string = name
  18. sql_attr_uint = age
  19. }
  20.  
  21. index account_idx
  22. {
  23. source = account_src
  24. path = /var/lib/sphinx/account_src
  25. docinfo = extern
  26. charset_type = utf-8
  27. }
  28.  
  29. indexer
  30. {
  31. mem_limit = 32M
  32. }
  33.  
  34. searchd
  35. {
  36. listen = 127.0.0.1:9312
  37. listen = 9306:mysql41
  38. log = /var/log/sphinx/searchd.log
  39. query_log = /var/log/sphinx/query.log
  40. read_timeout = 5
  41. max_children = 30
  42. pid_file = /var/run/sphinx/searchd.pid
  43. max_matches = 1000
  44. seamless_rotate = 1
  45. preopen_indexes = 1
  46. unlink_old = 1
  47. workers = threads # for RT to work
  48. binlog_path = /var/lib/sphinx
  49. }

创建全量索引

  1. indexer --config /etc/sphinx/sphinx.conf --all

启动后台搜索服务

  1. searchd --config /etc/sphinx/sphinx.conf

可设置crontab定期构建索引

  1. indexer --config /etc/sphinx/sphinx.conf --rotate account_idx

测试(自带search工具已不可用,可参照这里),所以需要源码安装sphinx的php扩展

  1. wget https://pecl.php.net/get/sphinx-1.3.3.tgz
  2. phpize && ./configure && make && make install
  3. <?php
  4. $s = new SphinxClient;
  5. $s->setServer("localhost", 9312);
  6. $s->setMatchMode(SPH_MATCH_ANY);
  7. $s->setMaxQueryTime(3);
  8. $result = $s->query("stone");
  9. var_dump($result);
  10. ?>

运行php test.php

  1. array(10) {
  2. ["error"]=>
  3. string(0) ""
  4. ["warning"]=>
  5. string(0) ""
  6. ["status"]=>
  7. int(0)
  8. ["fields"]=>
  9. array(1) {
  10. [0]=>
  11. string(4) "name"
  12. }
  13. ["attrs"]=>
  14. array(2) {
  15. ["name"]=>
  16. int(7)
  17. ["age"]=>
  18. int(1)
  19. }
  20. ["matches"]=>
  21. array(1) {
  22. [2]=>
  23. array(2) {
  24. ["weight"]=>
  25. int(1)
  26. ["attrs"]=>
  27. array(2) {
  28. ["name"]=>
  29. string(5) "stone"
  30. ["age"]=>
  31. int(6)
  32. }
  33. }
  34. }
  35. ["total"]=>
  36. int(1)
  37. ["total_found"]=>
  38. int(1)
  39. ["time"]=>
  40. float(0)
  41. ["words"]=>
  42. array(1) {
  43. ["stone"]=>
  44. array(2) {
  45. ["docs"]=>
  46. int(1)
  47. ["hits"]=>
  48. int(1)
  49. }
  50. }
  51. }

使用sphinx索引mysql数据的更多相关文章

  1. 使用Solr索引MySQL数据

    环境搭建 1.到apache下载solr,地址:http://mirrors.hust.edu.cn/apache/lucene/solr/ 2.解压到某个目录 3.cd into D:\Solr\s ...

  2. solr5.5索引mysql数据(新手总结)

    一 solr5.5环境部署到Eclipse(luna版) solr部署参见:http://blog.csdn.net/csmnjk/article/details/64121765 二 Ik分词器设置 ...

  3. Kettle ETL 来进行mysql 数据同步——试验环境搭建(表中无索引,无约束,无外键连接的情况)

    今天试验了如何在Kettle的图形界面(Spoon)下面来整合来mysql 数据库中位于不同数据库中的数据表中的数据. 试验用的数据表是customers: 第三方的数据集下载地址是:http://w ...

  4. Mysql数据库主键,外键,索引概述

    主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键;如:id ...

  5. MySQL数据和索引占用空间查询

    MySQL数据和索引占用空间查询 查询所有数据库占用磁盘空间大小的SQL语句 SELECT table_schema, -- 数据库名称 concat( TRUNCATE ( sum( data_le ...

  6. MySql数据表设计,索引优化,SQL优化,其他数据库

    MySql数据表设计,索引优化,SQL优化,其他数据库 1.数据表设计 1.1数据类型 1.2避免空值 1.3text类型优化 2.索引优化 2.1索引分类 2.2索引优化 3.SQL优化 3.1分批 ...

  7. windows7使用Sphinx+PHP+MySQL详细介绍

    安装(Windows) 1.官方下载 Sphinx下载地址: 下载 2.解压并重命名 此处下载版本为3.0.3,将 sphinx 文件夹命名为sphinx 3.文件夹目录介绍 sphinx --api ...

  8. macOS安装Solr并索引MySQL

    安装 Java 语言的软件开发工具包 brew cask install java 或者在 Oracle官网 中选择 Mac 版本 jdk-8u111-macosx-x64.dmg 下载并安装. 安装 ...

  9. MySQL数据的主从复制、半同步复制和主主复制详解

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

随机推荐

  1. switch函数——Gevent源码分析

    在gevent的源码中,经常能看到switch函数.而不同的类中的switch函数有不同的用法 1. greenlet的switch函数 这里面的greenlet是greenlet库中的greenle ...

  2. 最长增长子序列 DP

    #include<iostream> using namespace std; #define INF 0x7fffffff #define N 10000 // O(n^2) int l ...

  3. Android源码下载

    Android源码下载 1.安装git 2.安装repo 从这里 https://dl-ssl.google.com/dl/googlesource/git-repo/repo 下载repo文件 3. ...

  4. 以前用Delphi写的CSDN免积分下载器

    用了AlphaControl皮肤组件,原理很简单,就是CSDN的一个漏洞.我主要是使用WinInet来获取相关信息,然后从里面分析出真实的下载URL,同时我也是用了AES加密.function Get ...

  5. 谈谈ILDasm的功能限制与解除

    原文:谈谈ILDasm的功能限制与解除 首先,我在此申明,此文并不是教别人突破限制,我们只是用学习的眼光看问题 大家都知道ILDasm是.NET程序的反编译工具,它是由Microsoft提供的反编译工 ...

  6. Windows Azure Service Bus 推动财务服务门户的高可用性和可伸缩性

    抵押贷款公司和评估管理公司面临着快速.复杂且数据量极大的业务流程.他们需要可快速.轻松设置且容量几乎无限的可伸缩的企业级服务,来对处理评估订单以及自动化流程本身所产生的所有文档和数据进行管理. 这听起 ...

  7. JAVA的IO运用

    IO OF JAVA想写好一篇关于JAVA的IO的文章不容易,因为它涉及的东西很多难以写得有深度和有思路.我虽不才但也写.这篇文章有我个人不少的见解,虽然涉足计算机不深但我不想用一大堆这个可能那个可能 ...

  8. 普林斯顿大学算法课 Algorithm Part I 学习资源

    网友笔记参考 果壳Mooc首页 revilwang的专栏 白色咖啡 Weiran Liu的渣技术小专栏 Bug表:http://findbugs.sourceforge.net/bugDescript ...

  9. Android UI SurfaceView的使用-绘制单个图型或多个图形

    新建MyView类继承自SurfaceView: public class MyView extends SurfaceView implements SurfaceHolder.Callback { ...

  10. 用Meta 取消流量器缓存实现每次访问都刷新页面方便调试

    如果想禁止浏览器从本地缓存中调阅页面,可以设置网页不保存在缓存中,每次访问都刷新页面,下面是Meta在这方便的用法,需要的朋友可以参考下: <!-- 禁止浏览器从本地缓存中调阅页面.--> ...