Coreseek + Sphinx + Mysql + PHP构建中文全文检索引擎

为了节省时间,咱们就直奔主题!

用数据说话:

enter image description here

在windows上使用coreseek

安装步骤参考:http://www.coreseek.cn/products-install/install_on_windows/

安装好之后:

1.将文件 C:\usr\local\coreseek-4.1-win32\var\test\documents.sql 导入到mysql中test数据库中。
2.编辑文件 C:\usr\local\coreseek-4.1-win32\etc\csft_mysql.conf 修改成你的配置
sql_host                = localhost
sql_user                = root
sql_pass                = 111111
sql_db                    = test
sql_port                = 3306

把以下路径修改正确
path            = c:/usr/local/coreseek-4.1-win32/var/documents #请修改为实际使用的绝对路径
charset_dictpath = c:/usr/local/coreseek-4.1-win32/etc/ 
pid_file = c:/usr/local/coreseek-4.1-win32/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径
log = c:/usr/local/coreseek-4.1-win32/var/log/searchd_mysql.log
query_log = c:/usr/local/coreseek-4.1-win32/var/log/query_mysql.log

3.然后可以尝试双击运行 C:\usr\local\coreseek-4.1-win32\test_mysql.cmd 查看命令行是否正常显示

到此为止,搜索引擎已经搭建好了,下面就是修改配置文件让它能够满足实际应用场景,这里我给出我的csft_mysql.conf

source my_source
{
    type                    = mysql

    sql_host                = localhost
    sql_user                = root
    sql_pass                = 111111
    sql_db                    = price
    sql_port                = 3306
    sql_query_pre            = SET NAMES utf8

    sql_query                = select a.id, a.id AS id_new,b.MName, b.MName AS name_query,a.PriceMonth,b.MID,b.MUnit,b.MFormat,a.Price,a.PriceSource as Suppliers,a.Brand  FROM jprice as a left join m as b on a.MID=b.MID
                                                              #sql_query第一列id需为整数
                                                              #title、content作为字符串/文本字段,被全文索引
    #sql_attr_uint            = group_id           #从SQL读取到的值必须为整数
    #sql_attr_timestamp        = date_added #从SQL读取到的值必须为整数,作为时间属性
sql_attr_string = MName
sql_attr_string = MID
sql_attr_string = MUnit
sql_attr_string = MFormat
sql_attr_string = Suppliers
sql_attr_string = Brand
sql_attr_float = Price
sql_attr_uint = PriceMonth
    sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集
    sql_query_info            = SELECT a.*,b.* FROM jprice as a left join m as b on a.MID=b.MID WHERE a.id=$id #命令行查询时,从数据库读取原始数据信息
}

注意:索引的表必须有自增主键id

index my_index
{
    source            = my_source             #对应的source名称
    path            = c:/usr/local/coreseek-4.1-win32/var/my_index #请修改为实际使用的绝对路径,例如:/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
}

php代码如下:

<?php

require ( "sphinxapi.php" );

$cl = new SphinxClient ();
$cl->SetServer ( '127.0.0.1', 9312);
$cl->SetConnectTimeout ( 3 );
$cl->setArrayResult(true);
$cl->setSelect("MName,PriceMonth,MID,MUnit,MFormat,Price");
$cl->setMatchMode(SPH_MATCH_ALL);
$cl->SetFilterRange("PriceMonth", 201201, 201301);
$cl->SetLimits(0, 30);
$cl->SetSortMode(SPH_SORT_ATTR_DESC,"MName");
$cl->SetSortMode(SPH_SORT_ATTR_DESC,"PriceMonth");
$result = $cl->Query('热熔 110', 'my_index');//多个索引用','隔开 所有索引用*
print_r($result);

?>

在linux上使用coreseek

安装步骤参考:http://www.coreseek.cn/products-install/install_on_bsd_linux/

安装好之后,跟windows的一样,只需要修改配置文件csft_mysql.conf把 数据库的配置和所有路径修改正确即可!

祝你好运~~~