首先在你的linux上先下载一个coreseek的一个linux的安装包
博主给大家奉献的下载地址:
打开linux首先安装如下依赖包;(如果有的话只需要更新)
yum -y install m4 autoconf automake libtool
yum -y install gcc gcc-c++ wget
yum -y install mysql-devel
mmseg3是一个中文分词插件
执行如下命令:
tar xzvf coreseek-3.2.14.tar.gz //解压命令
cd coreseek-3.2.14 //进入目录
cd mmseg-3.2.14/ //进入中文分词插件
./bootstrap
./configure --prefix=/usr/local/mmseg3 //检测配置
make && make install //编译 && 编译安装
cd ../csft-3.2.14/ //进入配置目录
sh buildconf.sh //执行脚本
./configure --prefix=/usr/local/coreseek --without-python --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql --host=arm
//检测配置
安装过程需要修改一个配置文件
vi src/sphinxexpr.cpp
//然后将所有的
T val = ExprEval ( this->m_pArg, tMatch ).....
//修改为
T val = this->ExprEval ( this->m_pArg, tMatch )
//(建议大家将此文件拿到本地进行修改)
make
make install
cd /usr/local/coreseek/etc //进入coreseek安装完成的路径
输入ls会看到3个文件
example.sql
sphinx.conf.dist
sphinx-min.conf.dist
其中example.sql是示例sql脚本我们将其导入到数据库中的test数据库中作为测试数据(会创建两张表 documents和tags)
vi sphinx.conf
输入以下内容:
source src1
{
type = mysql
sql_host = 192.168.214.128
sql_user = root
sql_pass = root
sql_db = test
sql_port = 3306 # optional, default is 3306
sql_sock = /tmp/mysql.sock
sql_query_pre = SET NAMES utf8
sql_query =
SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \FROM documents
sql_attr_uint = group_id
sql_attr_timestamp = date_added
sql_query_info = SELECT * FROM documents WHERE id=$id
}
index test1
{
source = src1
path = /usr/local/coreseek/var/data/test1
docinfo = extern
charset_type = zh_cn.utf-8
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
charset_dictpath = /usr/local/mmseg3/etc/
ngram_len = 0
}
indexer
{
mem_limit = 32M
}
searchd
{
port = 9312
log = /usr/local/coreseek/var/log/searchd.log
query_log = /usr/local/coreseek/var/log/query.log
read_timeout = 5
max_children = 30
pid_file = /usr/local/coreseek/var/log/searchd.pid
max_matches = 1000
seamless_rotate = 1
preopen_indexes = 0
unlink_old = 1
}
说明:
代码段source src1{***}
代表数据源里面主要包含了数据库的配置信息,src1
表示数据源名字,可以随便写。
代码段index test1{***}
代表为哪个数据源创建索引,与source
是成对出现的,其中的source
参数的值必须是某一个数据源的名字
。
其他参数可以查看手册,这里不再赘述。
生成索引
//其中参数--all表示生成所有索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --all
当然也可以是索引的名字例如
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf test1
执行后可以在/usr/local/coreseek/var/data目录中看到多出一些文件,是以索引名为文件名的不同的扩展名的文件
在不启动sphinx的情况下即可测试命令:
/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf number
//(这是开启sphinx的命令行搜索就是说 number是你要查询的数据名称)
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf
//(searchd是开启sphinx的搜索服务功能)
Php操作linux上的sphinx
在站点域名目录下创建一个文件列如test.php
在test.php文件中写入如下内容
(注意与test同级需要将本身的sphinxapi类加载进来)
<?php
header("content-type:text/html;charset=utf8");
include'./sphinxapi.php';
$sphinx= new SphinxClient();
$sphinx->SetServer('你linux上的ip地址',9312);
$res=$sphinx->Query("搜索字段","*"); //这里的*代表匹配所有定义好的规则
print_r($res);
?>