windows下安装 sphinx 数据库全文搜索引擎

此次演示的环境是:win7系统,64位,php5.4.x,apache

 

sphinx,斯芬克斯(英语不好的同学可以直接读这个音),意狮身人面像

特点:创建索引速度快,3分钟左右能创建100万条记录的索引;检索速度快,1000万的记录检索速度在毫秒级上;为很多脚本语言设计了检索API;专门为php设计了存储引擎插件。

 

1. 去 sphinx官网 下载一个版本,在 http://sphinxsearch.com/downloads/archive/ 页面下载以前的版本。我下载是 Win64 binaries w/MySQL+id64 support。(注意:要选择适合自己本地环境的版本)

  (建议初学者别下载最新的版本,因为最新的版本资料少,出了问题初学者自己还解决不了,容易打击学习的信心)。

2. 直接解压到一个目录里,如 D:\sphinx ,新建两个文件夹,data和log。目录结构如下图:

  

3. 移动配置:将"sphinx-min.conf.in"复制到bin目录下,并改名为 "sphinx.conf"。(sphinx-min.conf.in和sphinx.conf.in的区别在于前者将后者存在的注释全去掉了,在我看来,这样更直观简单,注释太多的话,压力太大)

 

4. 修改配置:打开"sphinx.conf",根据实际情况修改配置。

    配置文件总共分为1个source,名为src1,也就是数据源;2个index,test1和testrt,表示索引;1个indexer,猜测是indexer命令的配置项;1个searchd,猜测是searchd命令的配置项。

    a. 数据源配置。

      就是配置数据库host,user,pass等等之类的,相信大家已经很熟了。sql_query就是一句select语句。sql_attr_xxx表示数据表的字段的属性,主要用于过滤和排序。

      如果数据库是utf8,在sql_port下加一行"sql_query_pre = SET NAMES utf8 "

    

  另外将配置文件所有的 "@CONFDIR@" (表示配置目录)替换为 "D:/sphinx"。

  下面是修改后的配置文件

 1     #
 2     # Minimal Sphinx configuration sample (clean, simple, functional)
 3     #
 4 
 5     source src1
 6     {
 7         type            = mysql
 8 
 9         sql_host        = localhost
10         sql_user        = root
11         sql_pass        = root
12         sql_db            = test
13         sql_port        = 3306
14 
15         #如果数据库是utf编码
16         sql_query_pre   = SET NAMES utf8
17 
18         sql_query        = \
19             SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
20             FROM documents
21 
22         sql_attr_uint        = group_id
23         sql_attr_timestamp    = date_added
24     }
25 
26 
27     index test1
28     {
29         source            = src1
30         path            = D:/sphinx/data/test1
31     }
32 
33 
34     index testrt
35     {
36         type            = rt
37         rt_mem_limit        = 128M
38 
39         path            = D:/sphinx/data/testrt
40 
41         rt_field        = title
42         rt_field        = content
43         rt_attr_uint        = gid
44     }
45 
46 
47     indexer
48     {
49         mem_limit        = 128M
50     }
51 
52 
53     searchd
54     {
55         listen            = 9312
56         listen            = 9306:mysql41
57         log            = D:/sphinx/log/searchd.log
58         query_log        = D:/sphinx/log/query.log
59         read_timeout        = 5
60         max_children        = 30
61         pid_file        = D:/sphinx/log/searchd.pid
62         seamless_rotate        = 1
63         preopen_indexes        = 1
64         unlink_old        = 1
65         workers            = threads # for RT to work
66         binlog_path        = D:/sphinx/data
67     }
View Code

 

5. 导入 "example.sql" 到数据库。(注意:该数据库就是上面配置中的数据库)

 

6. 打开CMD窗口:进入bin目录,shift+鼠标右键,选择"在此处打开命令窗口",进入cmd窗口。

  

7. 建立索引:在cmd命令行中输入  indexer.exe --all 

  

 

8. 开启searchd服务:在cmd命令行下输入  searchd.exe 

   

9. 成功后测试:

  a. 在D:\sphinx\api下写一个foo.php;

1 <?php
2 
3     require_once 'sphinxapi.php';
4 
5     $s = new SphinxClient();
6     $s->setServer('localhost', 9312);
7     $result = $s->Query('number');    //搜索"number"字符串
8 
9     print_r($result);

  b. 执行这个foo.php;

    在cmd命令输入  php D:\sphinx\api\foo.php ,结果如下

 1 Array
 2 (
 3     [error] =>
 4     [warning] =>
 5     [status] => 0
 6     [fields] => Array
 7         (
 8             [0] => title
 9             [1] => content
10         )
11 
12     [attrs] => Array
13         (
14             [group_id] => 1
15             [date_added] => 2
16         )
17 
18     [matches] => Array
19         (
20             [1] => Array
21                 (
22                     [weight] => 1442
23                     [attrs] => Array
24                         (
25                             [group_id] => 1
26                             [date_added] => 1476926888
27                         )
28 
29                 )
30 
31             [2] => Array
32                 (
33                     [weight] => 1442
34                     [attrs] => Array
35                         (
36                             [group_id] => 1
37                             [date_added] => 1476926888
38                         )
39 
40                 )
41 
42             [4] => Array
43                 (
44                     [weight] => 1442
45                     [attrs] => Array
46                         (
47                             [group_id] => 2
48                             [date_added] => 1476926888
49                         )
50 
51                 )
52 
53         )
54 
55     [total] => 3
56     [total_found] => 3
57     [time] => 0.000
58     [words] => Array
59         (
60             [number] => Array
61                 (
62                     [docs] => 3
63                     [hits] => 3
64                 )
65 
66         )
67 
68 )
View Code

    

 sphinx配置文件详解 - http://www.cnblogs.com/yjf512/p/3598332.html

posted @ 2016-10-22 15:24  刘一二  阅读(552)  评论(0编辑  收藏  举报