Coreseek Windows下安装调试

  由于项目需要全文检索,后面就去网上查了下资料,找到了Sphinx【中文是狮身人面像】这个全文检索引擎,听说挺好用的,不过没有中文分词。后面又去找了一下,找到了Coreseek,一款中文全文检索/搜索软件。

 

一、Sphinx PHP扩展下载

  PHP已经有专门的Sphinx的扩展文件,点击这里可以下载到不同版本的扩展。

  Coreseek Windows下安装调试

  扩展安装成功后,就能看到sphinx信息了。

  Coreseek Windows下安装调试

  也可以通过引用一个php类文件达到同样的效果,文件是在api文件夹下面的sphinxapi.php。这个更好用点,在调试的时候发现,如果是直接引用的那个dll有时候会报方法不存在,但是明明在PHP:Sphinx的API说明里面是有的。

  Coreseek Windows下安装调试

 

二、安装Coreseek

1) 我这边下载了4.1的版本。按照网站上面写的过程,我在本地布了一下。

  这个local目录其实可以自己随便建立,这里建的我感觉好深,打dos命令的时候挺麻烦的。

  Coreseek Windows下安装调试

  Coreseek Windows下安装调试

 

2) 打开下载下来的压缩包,etc里面有很多conf的配置文件。

  在var\test文件里有个documents.sql的文件,这一个demo数据库,等下就会用这个做测试。

  Coreseek Windows下安装调试Coreseek Windows下安装调试

 

3) 把etc中的csft_mysql.conf文件复制到bin中,并改名为sphinx.conf。

  因为我的全文检索需要配合MySQL数据库,所以需要配置这个文件。

  Coreseek Windows下安装调试

 

4) 修改配置文件,刚开始配置文件没设置好,老会报错。

#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/
#请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库

#源定义
source mysql
{
    type                    = mysql

    sql_host                = localhost
    sql_user                = root
    sql_pass                = 123456
    sql_db                  = sphinx
    sql_port                = 3306
    sql_query_pre            = SET NAMES utf8

    sql_query                = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents
                                                              #sql_query第一列id需为整数
                                                              #title、content作为字符串/文本字段,被全文索引
    sql_attr_uint            = group_id           #从SQL读取到的值必须为整数
    sql_attr_timestamp        = date_added #从SQL读取到的值必须为整数,作为时间属性
    
    sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集
    sql_query_info            = SELECT * FROM documents WHERE id=$id #命令行查询时,从数据库读取原始数据信息
}

#index定义
index mysql
{
    source            = mysql             #对应的source名称
    path            = C:/usr/local/coreseek-4.1-win32/var/data/documents #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    docinfo            = extern
    mlock            = 0
    morphology        = none
    min_word_len        = 1
    html_strip                = 0

    #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
    #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
    charset_dictpath = C:/usr/local/coreseek-4.1-win32/etc/        #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
    charset_type        = zh_cn.utf-8
}

#全局index定义
indexer
{
    mem_limit            = 128M
}

#searchd服务定义
searchd
{
    compat_sphinxql_magics = 0
    listen                  =   9312
    read_timeout        = 5
    max_children        = 30
    max_matches            = 1000
    seamless_rotate        = 0
    preopen_indexes        = 0
    unlink_old            = 1
    pid_file = C:/usr/local/coreseek-4.1-win32/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    log = C:/usr/local/coreseek-4.1-win32/var/log/searchd_mysql.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    query_log = C:/usr/local/coreseek-4.1-win32/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    binlog_path =                                #关闭binlog日志
}

 

5) 建立索引,打一句dos命令就行。

  Coreseek Windows下安装调试

  在#index定义中,设置了path的路径,在这个路径里面能够看到索引文件。

  Coreseek Windows下安装调试

 

6) 打开控制台让Sphinx监听端口,接收搜索命令。

  Coreseek Windows下安装调试

  searchd 可以安装成一个Windows服务,命令如下:

C:\usr\local\coreseek> C:\usr\local\coreseek\bin\searchd.exe --install --config C:\usr\local\coreseek\etc\coreseek.conf --servicename Coreseek

  这样 searchd 服务应该出现在“控制面板->系统管理->服务”的列表中了. 服务应该出现在“控制面板->系统管理->服务”的列表中了。

    删除服务的命令如下:

sc delete Coreseek

 

三、PHP代码测试

<?php
header(‘Content-Type: text/html; charset=utf-8‘);//防止中文显示为乱码
$s = new SphinxClient;//已经引入扩展,所以不需要额外require文件了
$s->setServer("127.0.0.1", 9312);  
$s->setMatchMode(SPH_MATCH_PHRASE);  
$s->setMaxQueryTime(30);  

$res = $s->query(‘愚人‘, ‘mysql‘); #[愚人]关键字,[mysql]数据源source  
$err = $s->GetLastError();  

echo ‘<pre>‘;  
var_dump($res);  
var_dump($err);  
echo ‘</pre>‘;  

查看到结果:

Coreseek Windows下安装调试

与数据库比对一下,可以看到搜索出了第一条的数据。

Coreseek Windows下安装调试

 

 

demo下载:

http://download.csdn.net/detail/loneleaf1/8285169

 

参考资料:

http://www.xingdonghai.cn/sphinx-2-0-3-windows-install-and-instructions/ Sphinx 2.0.3 Windows下安装与使用说明, 附查询实例

http://my.oschina.net/melonol/blog/127438 sphinx中文分词搜索coreseek windows下安装与基本使用简介

http://blog.csdn.net/hfahe/article/details/5603294 Sphinx找不到索引文件的解决办法

http://my.oschina.net/melonol/blog/127441 sphinx全文检索之PHP使用教程

Coreseek Windows下安装调试

上一篇:C# 委托


下一篇:[转]Delphi 关键字详解