mysql索引和sphinx_使用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

测试,源码安装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)

}

}

}

原文:http://www.cnblogs.com/ciaos/p/5090019.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值