博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用sphinx索引mysql数据
阅读量:6818 次
发布时间:2019-06-26

本文共 2571 字,大约阅读时间需要 8 分钟。

数据库表如下

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)(详细配置可参照 )

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.tgzphpize && ./configure && make && make install
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)    }  }}

转载于:https://www.cnblogs.com/ciaos/p/5090019.html

你可能感兴趣的文章
北斗有 35 颗卫星,而 GPS 有 24 颗卫星,为什么二者数量不同?
查看>>
php对gzip的使用(实例)
查看>>
iOS_7_scrollView大图缩放
查看>>
防火墙入站规则防护方程式攻击-比特币勒索
查看>>
Jackson序列化日期类型的属性
查看>>
pio 背景色
查看>>
[转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务
查看>>
linux内核段属性机制【转】
查看>>
eclipse设置系统字体
查看>>
复旦大学考研科目
查看>>
16、Java并发性和多线程-死锁
查看>>
Linux下用netstat查看网络状态、端口状态
查看>>
Java 实现有序链表
查看>>
zoj 1203 Swordfish
查看>>
手机怎么访问电脑服务器上的网页
查看>>
Python帮助函数调试函数 用于获取对象的属性及属性值
查看>>
制做rpm包工具fpm安装
查看>>
POJ 2253-Frogger (Prim)
查看>>
哪种锻炼方式最能让程序猿远离亚健康? - 强烈推荐
查看>>
基于Metronic的Bootstrap开发框架经验总结(15)-- 更新使用Metronic 4.75版本
查看>>