博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sphinx初探之安装
阅读量:6626 次
发布时间:2019-06-25

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

 

在Centos or redhat 安装Sphinx1.首先安装依赖包$ yum install postgresql-libs unixODBC2.安装软件$ rpm -Uhv sphinx-2.2.1-1.rhel6.x86_64.rpm3.启动服务$ service searchd start[root@face sphinx-2.2.10]# find / -name sphinx/var/run/sphinx/var/log/sphinx/var/lib/sphinx/etc/logrotate.d/sphinx/etc/sphinx/usr/share/sphinx/usr/share/sphinx/api/ruby/spec/sphinx/usr/share/sphinx/api/ruby/lib/sphinxmysql> #创建测试库mysql> create database test;Query OK, 1 row affected (0.00 sec)#插入测试数据mysql -uroot -ppassword test < /usr/share/doc/sphinx-2.2.10/example.sqlmysql> desc tags;+-------+---------+------+-----+---------+-------+| Field | Type    | Null | Key | Default | Extra |+-------+---------+------+-----+---------+-------+| docid | int(11) | NO   | PRI | NULL    |       || tagid | int(11) | NO   | PRI | NULL    |       |+-------+---------+------+-----+---------+-------+2 rows in set (0.00 sec)#表结构mysql> desc documents;+------------+--------------+------+-----+---------+----------------+| Field      | Type         | Null | Key | Default | Extra          |+------------+--------------+------+-----+---------+----------------+| id         | int(11)      | NO   | PRI | NULL    | auto_increment || group_id   | int(11)      | NO   |     | NULL    |                || group_id2  | int(11)      | NO   |     | NULL    |                || date_added | datetime     | NO   |     | NULL    |                || title      | varchar(255) | NO   |     | NULL    |                || content    | text         | NO   |     | NULL    |                |+------------+--------------+------+-----+---------+----------------+6 rows in set (0.00 sec)#表数据mysql> select * from documents;+----+----------+-----------+---------------------+-----------------+---------------------------------------------------------------------------+| id | group_id | group_id2 | date_added          | title           | content                                                                   |+----+----------+-----------+---------------------+-----------------+---------------------------------------------------------------------------+|  1 |        1 |         5 | 2016-01-15 14:24:23 | test one        | this is my test document number one. also checking search within phrases. ||  2 |        1 |         6 | 2016-01-15 14:24:23 | test two        | this is my test document number two                                       ||  3 |        2 |         7 | 2016-01-15 14:24:23 | another doc     | this is another group                                                     ||  4 |        2 |         8 | 2016-01-15 14:24:23 | doc number four | this is to test groups                                                    |+----+----------+-----------+---------------------+-----------------+---------------------------------------------------------------------------+4 rows in set (0.00 sec)mysql> select * from tags;+-------+-------+| docid | tagid |+-------+-------+|     1 |     1 ||     1 |     3 ||     1 |     5 ||     1 |     7 ||     2 |     2 ||     2 |     4 ||     2 |     6 ||     3 |    15 ||     4 |     7 ||     4 |    40 |+-------+-------+10 rows in set (0.00 sec)#sphinx的配置文件[root@face sphinx]# grep "^$\|^#" -v sphinx.confsource src1{
    #数据库类型 数据来源信息 type = mysql     #数据库的IP sql_host = localhost #数据库用户      sql_user = root     #数据库密码 sql_pass =xxxxxx #数据库库名 sql_db = test      #默认的配置文件没有这一句 需要注意 sql_sock = /tmp/mysql.sock sql_port = 3306 # optional, default is 3306      #定义取数据的SQL,第一列ID列必须为唯一的正整数值      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}index test1{
    #定义索引的源 source = src1 #设置生成的索引存放路径 path = /var/lib/sphinx/test1}index testrt{
#实时索引类型 type = rt rt_mem_limit = 128M path = /var/lib/sphinx/testrt rt_field = title rt_field = content rt_attr_uint = gid} #定义indexer配置选项indexer{
     #定义生成索引过程使用索引的限制 mem_limit = 128M} ##定义searchd守护进程的相关选项searchd{
     #tcp        0      0 0.0.0.0:9312                0.0.0.0:*                   LISTEN      9289/searchd     listen = 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

#启用无缝seamless轮转,防止searchd轮转在需要预取大量数据的索引时停止响应

#也就是说在任何时刻查询都可用,或者使用旧索引,或者使用新索引

seamless_rotate         = 1        preopen_indexes         = 1        unlink_old              = 1        workers                 = threads # for RT to work        binlog_path             = /var/lib/sphinx/}[root@face sphinx]# service searchd startStarting searchd: Sphinx 2.2.10-id64-release (2c212e0)Copyright (c) 2001-2015, Andrew AksyonoffCopyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com)using config file '/etc/sphinx/sphinx.conf'...listening on all interfaces, port=9312listening on all interfaces, port=9306precaching index 'test1'WARNING: index 'test1': preload: /var/lib/sphinx/test1.sph is invalid header file (too old index version?); NOT SERVINGprecaching index 'testrt'precached 2 indexes in 0.004 sec                                                           [  OK  ]#如果启动有warning 注意这儿的权限[root@face sphinx]# pwd/var/lib/sphinx[root@face sphinx]# chown sphinx.sphinx ./ -R[root@face sphinx]# [root@face sphinx]# lltotal 36-rw-------. 1 sphinx sphinx   8 Jan 15 15:28 binlog.001-rw-------. 1 sphinx sphinx   0 Jan 15 15:28 binlog.lock-rw-------. 1 sphinx sphinx  11 Jan 15 15:28 binlog.meta-rw-r--r--. 1 sphinx sphinx 128 Jan 15 15:32 test1.spa-rw-r--r--. 1 sphinx sphinx 148 Jan 15 15:32 test1.spd-rw-r--r--. 1 sphinx sphinx   1 Jan 15 15:32 test1.spe-rw-r--r--. 1 sphinx sphinx 371 Jan 15 15:32 test1.sph-rw-r--r--. 1 sphinx sphinx 190 Jan 15 15:32 test1.spi-rw-r--r--. 1 sphinx sphinx   0 Jan 15 15:32 test1.spk-rw-r--r--. 1 sphinx sphinx   0 Jan 15 15:32 test1.spm-rw-r--r--. 1 sphinx sphinx  37 Jan 15 15:32 test1.spp-rw-r--r--. 1 sphinx sphinx   1 Jan 15 15:32 test1.sps-rw-------. 1 sphinx sphinx   0 Jan 15 15:28 testrt.lock#不能有warning 开始的时候[root@face sphinx]# service searchd restartStopping searchd:                                          [  OK  ]Starting searchd: Sphinx 2.2.10-id64-release (2c212e0)Copyright (c) 2001-2015, Andrew AksyonoffCopyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com)using config file '/etc/sphinx/sphinx.conf'...listening on all interfaces, port=9312listening on all interfaces, port=9306precaching index 'test1'precaching index 'testrt'                                   precached 2 indexes in 0.001 sec                                                           [  OK  ]#不+ --rotate有可能起不来[root@face sphinx]# indexer --all --rotateSphinx 2.2.10-id64-release (2c212e0)Copyright (c) 2001-2015, Andrew AksyonoffCopyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com)using config file '/etc/sphinx/sphinx.conf'...indexing index 'test1'...collected 4 docs, 0.0 MBsorted 0.0 Mhits, 100.0% donetotal 4 docs, 193 bytestotal 0.003 sec, 58949 bytes/sec, 1221.74 docs/secskipping non-plain index 'testrt'...total 4 reads, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avgtotal 12 writes, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avgrotating indices: successfully sent SIGHUP to searchd (pid=9289).#连接server 查看数据状态[root@face sphinx]# mysql -h0 -P9306Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 1Server version: 2.2.10-id64-release (2c212e0)Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show tables;+--------+-------+| Index  | Type  |+--------+-------+| test1  | local || testrt | rt    |+--------+-------+2 rows in set (0.00 sec)mysql> select * from test1;+------+----------+------------+| id   | group_id | date_added |+------+----------+------------+|    1 |        1 | 1452839063 ||    2 |        1 | 1452839063 ||    3 |        2 | 1452839063 ||    4 |        2 | 1452839063 |+------+----------+------------+4 rows in set (0.00 sec)mysql> select * from testrt;Empty set (0.00 sec)

mysql> INSERT INTO testrt VALUES ( 1, 'first record', 'test one', 123 );

Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO testrt VALUES ( 2, 'second record', 'test two', 234 );

Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO testrt VALUES ( 3, 'three record', 'three', 334 );

Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM testrt;

+------+------+
| id | gid |
+------+------+
| 1 | 123 |
| 2 | 234 |
| 3 | 334 |
+------+------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM testrt WHERE MATCH('test');

+------+------+
| id | gid |
+------+------+
| 1 | 123 |
| 2 | 234 |
+------+------+
2 rows in set (0.00 sec)

#模糊匹配mysql> SELECT * FROM test1 WHERE MATCH('my document');+------+----------+------------+| id   | group_id | date_added |+------+----------+------------+|    1 |        1 | 1452839063 ||    2 |        1 | 1452839063 |+------+----------+------------+2 rows in set (0.00 sec)mysql> SELECT *, WEIGHT() FROM test1 WHERE MATCH('"document one"/1');SHOW META;+------+----------+------------+----------+| id   | group_id | date_added | weight() |+------+----------+------------+----------+|    1 |        1 | 1452839063 |     2663 ||    2 |        1 | 1452839063 |     1528 |+------+----------+------------+----------+2 rows in set (0.18 sec)#相关的元数据信息+---------------+----------+| Variable_name | Value    |+---------------+----------+| total         | 2        || total_found   | 2        || time          | 0.175    || keyword[0]    | document || docs[0]       | 2        || hits[0]       | 2        || keyword[1]    | one      || docs[1]       | 1        || hits[1]       | 2        |+---------------+----------+9 rows in set (0.00 sec)#相关的统计信息mysql> SET profiling=1;SELECT * FROM test1 WHERE id IN (1,2,4);SHOW PROFILE;Query OK, 0 rows affected (0.00 sec)+------+----------+------------+| id   | group_id | date_added |+------+----------+------------+|    1 |        1 | 1452839063 ||    2 |        1 | 1452839063 ||    4 |        2 | 1452839063 |+------+----------+------------+3 rows in set (0.00 sec)+--------------+----------+----------+---------+| Status       | Duration | Switches | Percent |+--------------+----------+----------+---------+| unknown      | 0.000206 | 4        | 65.61   || net_read     | 0.000004 | 1        | 1.27    || local_search | 0.000040 | 1        | 12.74   || sql_parse    | 0.000027 | 1        | 8.60    || fullscan     | 0.000002 | 1        | 0.64    || finalize     | 0.000015 | 1        | 4.78    || aggregate    | 0.000008 | 2        | 2.55    || net_write    | 0.000012 | 1        | 3.82    || eval_post    | 0.000000 | 1        | 0.00    || total        | 0.000314 | 13       | 0       |+--------------+----------+----------+---------+10 rows in set (0.00 sec)mysql> SELECT id, id%3 idd FROM test1 WHERE MATCH('this is | nothing') GROUP BY idd;SHOW PROFILE;+------+------+| id   | idd  |+------+------+|    1 |    1 ||    2 |    2 ||    3 |    0 |+------+------+3 rows in set (0.18 sec)+--------------+----------+----------+---------+| Status       | Duration | Switches | Percent |+--------------+----------+----------+---------+| unknown      | 0.000430 | 6        | 0.24    || net_read     | 0.000014 | 1        | 0.01    || local_search | 0.000192 | 1        | 0.11    || sql_parse    | 0.000056 | 1        | 0.03    || dict_setup   | 0.000002 | 1        | 0.00    || parse        | 0.000040 | 1        | 0.02    || transforms   | 0.000003 | 1        | 0.00    || init         | 0.177525 | 3        | 99.51   || read_docs    | 0.000053 | 2        | 0.03    || get_docs     | 0.000008 | 5        | 0.00    || get_hits     | 0.000005 | 2        | 0.00    || filter       | 0.000002 | 1        | 0.00    || rank         | 0.000001 | 3        | 0.00    || sort         | 0.000014 | 2        | 0.01    || finalize     | 0.000004 | 1        | 0.00    || aggregate    | 0.000017 | 2        | 0.01    || net_write    | 0.000027 | 1        | 0.02    || eval_post    | 0.000001 | 1        | 0.00    || total        | 0.178394 | 35       | 0       |+--------------+----------+----------+---------+19 rows in set (0.00 sec)mysql> CALL KEYWORDS ('one two three', 'test1');+------+-----------+------------+| qpos | tokenized | normalized |+------+-----------+------------+| 1    | one       | one        || 2    | two       | two        || 3    | three     | three      |+------+-----------+------------+3 rows in set (0.00 sec)#hits表示是否命中mysql> CALL KEYWORDS ('one two three', 'test1', 1);+------+-----------+------------+------+------+| qpos | tokenized | normalized | docs | hits |+------+-----------+------------+------+------+| 1    | one       | one        | 1    | 2    || 2    | two       | two        | 1    | 2    || 3    | three     | three      | 0    | 0    |+------+-----------+------------+------+------+3 rows in set (0.00 sec)

 试验到这儿吧

转载于:https://www.cnblogs.com/similarface/p/5133515.html

你可能感兴趣的文章
Nginx安装及配置详解【转】
查看>>
vue2.0 :style :class样式设置
查看>>
测不准原理主要指向微观
查看>>
Android之ExpandableList扩展用法(基于BaseExpandableListAdapter)
查看>>
解决注册表映像劫持
查看>>
怎样获取Web应用程序的路径
查看>>
xcode crash 查找 EXC_BAD_ACCESS 问题根源的方法
查看>>
linux下为php添加mongodb扩展
查看>>
使用java.util.concurrent.ThreadFactory来创建线程
查看>>
宅男程序员给老婆的计算机课程之5:设计模式
查看>>
PHPWAMP强行脱离依赖,在系统缺失必备组件或DLL受损的情况下依然能正常运行
查看>>
echo显示颜色
查看>>
Debian 环境中安装git服务器 Gogs(下)
查看>>
UNIX高级环境编程: 终端登录过程-远程登录-进程组-Session-Linux启动过程-dup与重定向-守护进程...
查看>>
中国大数据科技传播联盟在京成立
查看>>
xargs 命令
查看>>
awk——报告生成器
查看>>
oracle 体系结构
查看>>
Nginx+Keepalived搭建高可用负载均衡集群
查看>>
VS2015 正式版中为什么没有了函数前面引用提示了?
查看>>