PHP高级工程师|全栈工程师|WX: Aben_Ring

coreseek 測試用例

準備材料

測試數據:article.sql
配置文件:csft_mysql.conf
php測試代碼:test_coreseek.php

測試數據(sql)

CREATE TABLE `article` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `content` text COLLATE utf8mb4_general_ci,
  `pub_date` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- ----------------------------
-- Records of article
-- ----------------------------
INSERT INTO `article` VALUES ('1', '武漢疫情', '2020年初,武漢發生疫情,成為重災區', null);
INSERT INTO `article` VALUES ('2', '武漢第一線', '疫情逐漸好轉', null);
INSERT INTO `article` VALUES ('3', '上級指導思想', '公司領導統一安排', null);

配置文件(code) csft_mysql.conf

#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                = root
    sql_db                  = coreseek
    sql_port                = 3306
    sql_query_pre            = SET NAMES utf8

    #sql_query第一列id需为整数
    #title、content作为字符串/文本字段,被全文索引
    sql_query                = SELECT id, UNIX_TIMESTAMP(pub_date) AS pub_date, title, content FROM article
                                                              
                                                              
    #从SQL读取到的值必须为整数
    #sql_attr_uint            = group_id        

    #从SQL读取到的值必须为整数,作为时间属性   	
    sql_attr_timestamp        = pub_date 			

    #命令行查询时,设置正确的字符集
    sql_query_info_pre      = SET NAMES utf8                        

    #命令行查询时,从数据库读取原始数据信息	
    sql_query_info            = SELECT * FROM article WHERE id=$id 
}

#index定义
index mysql
{
    #对应的source名称
    source          = mysql             
	
    #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    path            = D:/Coreseek/var/data/mysql 
    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环境下设置,/符号结尾
	
    #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
    charset_dictpath = D:/Coreseek/etc/                             
    charset_type        = zh_cn.utf-8
}

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

#searchd服务定义
searchd
{
    listen              = 9312
    read_timeout        = 5
    max_children        = 30
    max_matches         = 1000
    seamless_rotate     = 0
    preopen_indexes     = 0
    unlink_old          = 1
    pid_file = D:/Coreseek/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    log = D:/Coreseek/var/log/searchd_mysql.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    query_log = D:/Coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}

生成索引(shell)

d:/Coreseek/bin/indexer -c d:/Coreseek/etc/csft_mysql.conf --all

啟動coreseek服務(shell)

d:/Coreseek/bin/searchd -c d:/Coreseek/etc/csft_mysql.conf

php 測試 (code)

<?php

$word = $_GET['w'] ?? "疫情";

require ( "sphinxapi.php" );
$cl = new SphinxClient ();
$cl->SetServer ( '127.0.0.1', 9312);
$cl->SetConnectTimeout ( 3 );
$cl->SetArrayResult ( true );
$cl->SetMatchMode ( SPH_MATCH_ANY);
$res = $cl->Query ( $word, "*" );
echo "<pre>";
//print_r($cl);
print_r($res);

測試結果 (shell)

php D:\phpstudy\WWW\coreseek\index.php

posted @ 2020-03-16 15:49  懒牛拉车  阅读(181)  评论(0编辑  收藏  举报