sphinx在linux系统的安装
2015-09-10 18:34
543 查看
本人机器系统:
[root@xxx ~]# cat /proc/version
Linux version 2.6.32-431.23.3.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Thu Jul 31 17:20:51 UTC 2014
1.到官网下载源代码安装,你也可以根据系统直接下载rpm包安装
我们这里选择源码安装
下载完之后,放到目录/home 下
2.解压>>:tar -xzvf sphinx-2.2.10-release.tar.gz
>>:mv sphinx-2.2.10-release sphinx
>>:cd sphinx
>>:./configure --prefix=/usr/local/sphinx
>>:make
make install
cd /usr/local/sphinx/etc/
mv sphinx-min.conf.dist sphinx.conf
vim sphinx.conf
下面是里面的内容配置
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#
source src1
{
type = mysql
sql_host
= 127.0.0.1
sql_user
= root
sql_pass
=
sql_db
= test //数据库name
sql_port
= 3306 # optional, default is 3306
sql_query
= \
SELECT id, realname,import_id, account, source ,UNIX_TIMESTAMP(import_time) AS import_timestamp \
FROM contact_list_test
sql_attr_uint
= id
sql_attr_timestamp= import_timestamp
}
index test1
{
source
= src1
path = /usr/local/sphinx/var/data/test1
}
index testrt
{
type = rt
rt_mem_limit
= 128M
path = /usr/local/sphinx/var/data/testrt
rt_field
= title
rt_field
= content
rt_attr_uint
= gid
}
indexer
{
mem_limit
= 128M
}
searchd
{
listen
= 9312
listen
= 9306:mysql41
log = /usr/local/sphinx/var/log/searchd.log
query_log
= /usr/local/sphinx/var/log/query.log
read_timeout
= 5
max_children
= 30
pid_file
= /usr/local/sphinx/var/log/searchd.pid
seamless_rotate= 1
preopen_indexes= 1
unlink_old
= 1
workers
= threads # for RT to work
binlog_path
= /usr/local/sphinx/var/data
}
生成索引:
cd /usr/local/sphinx/bin
./indexer -c /usr/local/sphinx/etc/sphinx.conf --all
如果此时出现以下错误,
FATAL: failed to lock /usr/local/sphinx/var/data/test1.spl: Resource temporarily unavailable, will not index. Try --rotate option.
请改用命令
./indexer -c /usr/local/sphinx/etc/sphinx.conf --all --rotate
启动spinx搜索服务器:./searchd -c /usr/local/sphinx/etc/sphinx.conf
使用sphinx php api测试:
打印的结果:
Query 'weibo' retrieved 1000 of 3873 matches in 0.001 sec.
Query stats:
'weibo' found 3873 times in 3873 documents
Matches:
1. doc_id=1, weight=1, import_timestamp=2015-06-26 16:25:41
2. doc_id=4, weight=1, import_timestamp=2015-06-26 16:25:41
3. doc_id=5, weight=1, import_timestamp=2015-06-26 16:25:41
4. doc_id=6, weight=1, import_timestamp=2015-06-26 16:25:41
5. doc_id=8, weight=1, import_timestamp=2015-06-26 16:25:41
6. doc_id=9, weight=1, import_timestamp=2015-06-26 16:25:41
7. doc_id=10, weight=1, import_timestamp=2015-06-26 16:25:41
8. doc_id=11, weight=1, import_timestamp=2015-06-26 16:25:41
9. doc_id=12, weight=1, import_timestamp=2015-06-26 16:25:41
10. doc_id=13, weight=1, import_timestamp=2015-06-26 16:25:41
11. doc_id=14, weight=1, import_timestamp=2015-06-26 16:25:41
12. doc_id=15, weight=1, import_timestamp=2015-06-26 16:25:41
13. doc_id=16, weight=1, import_timestamp=2015-06-26 16:25:41
14. doc_id=17, weight=1, import_timestamp=2015-06-26 16:25:41
15. doc_id=18, weight=1, import_timestamp=2015-06-26 16:25:41
16. doc_id=19, weight=1, import_timestamp=2015-06-26 16:25:41
17. doc_id=20, weight=1, import_timestamp=2015-06-26 16:25:41
18. doc_id=21, weight=1, import_timestamp=2015-06-26 16:25:41
19. doc_id=22, weight=1, import_timestamp=2015-06-26 16:25:41
20. doc_id=23, weight=1, import_timestamp=2015-06-26 16:25:41
[root@xxx ~]# cat /proc/version
Linux version 2.6.32-431.23.3.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Thu Jul 31 17:20:51 UTC 2014
1.到官网下载源代码安装,你也可以根据系统直接下载rpm包安装
我们这里选择源码安装
下载完之后,放到目录/home 下
2.解压>>:tar -xzvf sphinx-2.2.10-release.tar.gz
>>:mv sphinx-2.2.10-release sphinx
>>:cd sphinx
>>:./configure --prefix=/usr/local/sphinx
>>:make
make install
cd /usr/local/sphinx/etc/
mv sphinx-min.conf.dist sphinx.conf
vim sphinx.conf
下面是里面的内容配置
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#
source src1
{
type = mysql
sql_host
= 127.0.0.1
sql_user
= root
sql_pass
=
sql_db
= test //数据库name
sql_port
= 3306 # optional, default is 3306
sql_query
= \
SELECT id, realname,import_id, account, source ,UNIX_TIMESTAMP(import_time) AS import_timestamp \
FROM contact_list_test
sql_attr_uint
= id
sql_attr_timestamp= import_timestamp
}
index test1
{
source
= src1
path = /usr/local/sphinx/var/data/test1
}
index testrt
{
type = rt
rt_mem_limit
= 128M
path = /usr/local/sphinx/var/data/testrt
rt_field
= title
rt_field
= content
rt_attr_uint
= gid
}
indexer
{
mem_limit
= 128M
}
searchd
{
listen
= 9312
listen
= 9306:mysql41
log = /usr/local/sphinx/var/log/searchd.log
query_log
= /usr/local/sphinx/var/log/query.log
read_timeout
= 5
max_children
= 30
pid_file
= /usr/local/sphinx/var/log/searchd.pid
seamless_rotate= 1
preopen_indexes= 1
unlink_old
= 1
workers
= threads # for RT to work
binlog_path
= /usr/local/sphinx/var/data
}
生成索引:
cd /usr/local/sphinx/bin
./indexer -c /usr/local/sphinx/etc/sphinx.conf --all
如果此时出现以下错误,
FATAL: failed to lock /usr/local/sphinx/var/data/test1.spl: Resource temporarily unavailable, will not index. Try --rotate option.
请改用命令
./indexer -c /usr/local/sphinx/etc/sphinx.conf --all --rotate
启动spinx搜索服务器:./searchd -c /usr/local/sphinx/etc/sphinx.conf
使用sphinx php api测试:
<?php require ( "sphinxapi.php" ); //此文件在sphinx源代码的api文件夹中可以找到 $cl = new SphinxClient (); $q = "weibo"; $sql = "test1"; $mode = SPH_MATCH_ALL; $host = "localhost"; $port = 9312; $index = "*"; // $groupby = ""; // $groupsort = "@group desc"; // $filter = "group_id"; // $filtervals = array(); // $distinct = ""; // $sortby = ""; // $sortexpr = ""; // $limit = 20; // $ranker = SPH_RANK_PROXIMITY_BM25; // $select = ""; $cl->SetServer ( $host, $port ); $cl->SetConnectTimeout ( 1 ); $cl->SetArrayResult ( true ); $cl->SetMatchMode ( $mode ); // if ( count($filtervals) ) $cl->SetFilter ( $filter, $filtervals ); // if ( $groupby ) $cl->SetGroupBy ( $groupby, SPH_GROUPBY_ATTR, $groupsort ); // if ( $sortby ) $cl->SetSortMode ( SPH_SORT_EXTENDED, $sortby ); // if ( $sortexpr ) $cl->SetSortMode ( SPH_SORT_EXPR, $sortexpr ); // if ( $distinct ) $cl->SetGroupDistinct ( $distinct ); // if ( $select ) $cl->SetSelect ( $select ); // if ( $limit ) $cl->SetLimits ( 0, $limit, ( $limit>1000 ) ? $limit : 1000 ); //$cl->SetRankingMode ( $ranker ); $res = $cl->Query ( $q, $index ); //////////////// // print me out //////////////// if ( $res===false ) { print "Query failed: " . $cl->GetLastError() . ".<br/>"; } else { if ( $cl->GetLastWarning() ) print "WARNING: " . $cl->GetLastWarning() . "<br/><br/>"; print "Query '$q' retrieved $res[total] of $res[total_found] matches in $res[time] sec.<br/>"; print "Query stats:<br/>"; if ( is_array($res["words"]) ) foreach ( $res["words"] as $word => $info ) print " '$word' found $info[hits] times in $info[docs] documents\n"; print "<br/>"; if ( is_array($res["matches"]) ) { $n = 1; print "Matches:<br/>"; foreach ( $res["matches"] as $docinfo ) { print "$n. doc_id=$docinfo[id], weight=$docinfo[weight]"; foreach ( $res["attrs"] as $attrname => $attrtype ) { $value = $docinfo["attrs"][$attrname]; if ( $attrtype==SPH_ATTR_MULTI || $attrtype==SPH_ATTR_MULTI64 ) { $value = "(" . join ( ",", $value ) .")"; } else { if ( $attrtype==SPH_ATTR_TIMESTAMP ) $value = date ( "Y-m-d H:i:s", $value ); } print ", $attrname=$value"; } print "<br/>"; $n++; } } } // // $Id$ // ?>
打印的结果:
Query 'weibo' retrieved 1000 of 3873 matches in 0.001 sec.
Query stats:
'weibo' found 3873 times in 3873 documents
Matches:
1. doc_id=1, weight=1, import_timestamp=2015-06-26 16:25:41
2. doc_id=4, weight=1, import_timestamp=2015-06-26 16:25:41
3. doc_id=5, weight=1, import_timestamp=2015-06-26 16:25:41
4. doc_id=6, weight=1, import_timestamp=2015-06-26 16:25:41
5. doc_id=8, weight=1, import_timestamp=2015-06-26 16:25:41
6. doc_id=9, weight=1, import_timestamp=2015-06-26 16:25:41
7. doc_id=10, weight=1, import_timestamp=2015-06-26 16:25:41
8. doc_id=11, weight=1, import_timestamp=2015-06-26 16:25:41
9. doc_id=12, weight=1, import_timestamp=2015-06-26 16:25:41
10. doc_id=13, weight=1, import_timestamp=2015-06-26 16:25:41
11. doc_id=14, weight=1, import_timestamp=2015-06-26 16:25:41
12. doc_id=15, weight=1, import_timestamp=2015-06-26 16:25:41
13. doc_id=16, weight=1, import_timestamp=2015-06-26 16:25:41
14. doc_id=17, weight=1, import_timestamp=2015-06-26 16:25:41
15. doc_id=18, weight=1, import_timestamp=2015-06-26 16:25:41
16. doc_id=19, weight=1, import_timestamp=2015-06-26 16:25:41
17. doc_id=20, weight=1, import_timestamp=2015-06-26 16:25:41
18. doc_id=21, weight=1, import_timestamp=2015-06-26 16:25:41
19. doc_id=22, weight=1, import_timestamp=2015-06-26 16:25:41
20. doc_id=23, weight=1, import_timestamp=2015-06-26 16:25:41
相关文章推荐
- Linux文件锁和fcntl系统调用
- linux 下mysql备份还原方法
- linux C++ 使用zlib 压缩字符串
- linux下忘记MySQL的root密码的解决方法
- VMware 在 Linux 虚拟机中安装 VMTools
- Linux下的tar命令
- 调整Azure中虚拟机数据磁盘大小实践
- 【Linux】使用Ubuntu过程中遇到的问题
- Debian/Ubuntu/CentOS VPS安装Net-Speeder并优化
- linux php安装
- Linux 源码安装 PostgreSql “ configure: error: readline library not found”
- CentOS 7 手工添加软件EPEL仓库配置文件
- Linux下用c实现通过ping检测连接
- 使用ubuntu的一些简单配置
- VPS 远程拷贝文件
- Java JDK 8 安装和环境变量的配置(Linux and Windows)
- mysql linux 备份脚本
- 7个免费的Linux FTP客户端工具
- linux proc
- 位图文件(BMP)格式以及Linux下C程序实现