sphinx原理
- 先创建数据源。
- 根据数据源创建索引,使用分词技术。
- php把查询的关键词给Sphinx服务器,Sphinx根据关键词查找到关键字在mysql表里面的记录的id.Sphinx把id返回给php查询端。
- php根据返回的id,查询mysql服务器。
安装gcc和gcc-c++
yum install gcc
yum install gcc-c++ libstdc++-devel
安装sphinx-for-chinese
下载并放在/usr/local目录下并解压
tar -zxvf sphinx-for-chinese.tar.gz
./configure --prefix=/usr/local/sphinx-for-chinese --with-mysql
make
make install
生成字典
将文件夹中的 xdict_1.1.txt(下载xdict_1.1.tar.gz)文件丢到 /usr/local/sphinxforchinese目录下
cd /usr/local/sphinx-for-chinese
/usr/local/sphinxforchinese/bin/mkdict xdict_1.1.txt etc/xdict
若 /usr/local/sphinx-for-chinese/etc/ 文件夹中有xdic代表成功
重建索引
创建一个sphinx.cof文件放到 /usr/local/sphinx-for-chinese/etc 在其中配置好相关信息
source main{
type = mysql
sql_host = 127.0.0.1
sql_user = ********** #数据库用户名
sql_pass = ********** #数据库密码
sql_db = ********** #使用数据库
sql_port = 3306
sql_sock=/tmp/mysql.sock #mysql文件
sql_query_pre = SET NAMES utf8
sql_query = \
SELECT id,ti FROM tiku
}
source src1throttled : main{
}
index tiku{
source=main
path=/usr/local/sphinx-for-chinese/var/data/tiku
charset_type = utf-8
chinese_dictionary = /usr/local/sphinx-for-chinese/etc/xdict
}
indexer{
mem_limit = 256M
}
searchd
{
listen = 9312
listen = 9306:mysql41
log = /usr/local/sphinx-for-chinese/var/log/searchd.log
query_log = /usr/local/sphinx-for-chinese/var/log/query.log
read_timeout = 5
max_children = 30
pid_file = /usr/local/sphinx-for-chinese/log/searchd.pid
seamless_rotate= 1
preopen_indexes= 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = /usr/local/sphinx-fo-rchinese/var/data
}
配置说明: