zoukankan      html  css  js  c++  java
  • 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:sphinxapi下写一个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:sphinxapifoo.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

  • 相关阅读:
    js控制treeview默认展开
    java 在方法中新建线程,传参和加锁详解
    springmvc加载xml文件读取本地properties配置文件
    Android系统目录结构详解
    支付宝沙箱测试-ALI40247
    转化.vdi到.vmdk
    查看网页自动保存的密码
    天猫魔盘在 deepin-linux中的使用
    百度云-上传服务器出错误
    安装出现了error launching installer
  • 原文地址:https://www.cnblogs.com/lhat/p/5987706.html
Copyright © 2011-2022 走看看