admin

coreseek的全文搜索,中文分词的使用
coreseek的全文搜索,中文分词的使用2019-04-30 16:35 by admin 16 0 PHP +...
扫描右侧二维码阅读全文
18
2019/01

coreseek的全文搜索,中文分词的使用

coreseek的全文搜索,中文分词的使用
2019-04-30 16:35 by admin 16 0
PHP + MySql coreseek的全文搜索,中文分词的使用
windows下的包

链接:https://pan.baidu.com/s/1I-egWZlDTp9GwMJnceJ9Qw
提取码:ew9q

其中 bin 存放索引启动文件 etc 存放sphinx配置文件 var存放生成的索引文件

先不要着急看里面文件夹的东西 先准备一张数据表

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for shop_goods
-- ----------------------------
DROP TABLE IF EXISTS shop_goods;
CREATE TABLE shop_goods (
id int(11) NOT NULL AUTO_INCREMENT,
goods_name varchar(20) NOT NULL DEFAULT '' COMMENT '订单id',
price tinyint(4) NOT NULL DEFAULT '0' COMMENT '支付状态 0:未支付 1:已支付',
createtime int(11) NOT NULL COMMENT '订单创建时间',
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=56 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of shop_goods
-- ----------------------------
INSERT INTO shop_goods VALUES ('55', '苹果8', '127', '0');
接下来配置etc/csft_mysql.conf

源定义

source goods
{
    type                    = mysql
    sql_host                = localhost
    sql_user                = root
    sql_pass                = root
    sql_db                  = shop
    sql_port                = 3306
    #在取数据之前会执行的sql语句
    sql_query_pre           = SET NAMES utf8
    #主查询 一个数据源中只允许有这一个命令
    #第一个字段必须是id(主键) 可起别名 例  SELECT goodsid id from
    sql_query               = SELECT id,goods_name,price,createtime FROM shop_goods                                                     #sql_query第一列id需为整数                                                      #title、content作为字符串/文本字段,被全文索引
    #定义属性:用于排序 前提是该属性需要sql_query取出来 可定义多个
    sql_attr_uint           = price          
    sql_attr_uint           = createtime
}

index定义

index goods
{
    #对应的source名称
    source            = goods     
    #索引文件生成的目录 目录名最后一级是表示文件名 而不是目录
    path              = D:\upupw7\htdocs\coreseek\var\data\goods 
    docinfo           = extern
    mlock             = 0
    morphology        = none
    #允许的最大单词是多长
    #例如有个词叫 '测试',这个词在词库中是没有的,如果设置min_word_len为2(传入的词至少由两个字组成),
    #而词库中又没有'测试' 这个词,sphinx只好忽略掉
    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/...
    #中文词库的目录 mmseg.ini uni.lib unigram.txt
    charset_dictpath = D:\upupw7\htdocs\coreseek\etc                         
    charset_type     = zh_cn.utf-8
}

允许使用多大的内存创建索引文件(index.exe)

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
    ###三个文件存放目录
    #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    pid_file            = D:\upupw7\htdocs\coreseek\var\log\goods.pid
    #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    log                 = D:\upupw7\htdocs\coreseek\var\log\goods.log       
    #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    query_log           = D:\upupw7\htdocs\coreseek\var\log\query_goods.log       
     #关闭binlog日志
    binlog_path =                               
}

配置填写完之后 生成索引文件

D:\upupw7\htdocs\coreseek\bin\indexer.exe -c D:\upupw7\htdocs\coreseek\etc\csft_mysql.conf goods
##--all创建全部索引

f1.png

生成索引之后 安装 searchd.exe 服务

D:\upupw7\htdocs\coreseek\bin\searchd.exe -c D:\upupw7\htdocs\coreseek\etc\csft_mysql.conf --install

f2.png

如果创建服务失败 请以管理员身份运行cmd

执行

services.msc

查看服务
f3.png

找到searchd服务并启动
f4.png

启动成功
f5.png

如果searchd总是启动失败 调用命令看看是不是配置文件有错误

D:\upupw7\htdocs\coreseek\bin\searchd --config D:\upupw7\htdocs\coreseek\etc\csft_mysql.conf

开始测试,简单地写一个脚本

<?php
include './api/sphinxapi.php';
$cli = new SphinxClient();
$cli->SetServer('localhost',9312);
$res = $cli->query('苹果');
echo '<pre>';
var_dump($res);
?>

然后发现返回了结果

array(10) {
  ["error"]=>
  string(0) ""
  ["warning"]=>
  string(0) ""
  ["status"]=>
  int(0)
  ["fields"]=>
  array(1) {
    [0]=>
    string(10) "goods_name"
  }
  ["attrs"]=>
  array(2) {
    ["price"]=>
    int(1)
    ["createtime"]=>
    int(1)
  }
  ["matches"]=>
  array(1) {
    [55]=>
    array(2) {
      ["weight"]=>
      string(1) "1"
      ["attrs"]=>
      array(2) {
        ["price"]=>
        string(3) "127"
        ["createtime"]=>
        string(1) "0"
      }
    }
  }
  ["total"]=>
  string(1) "1"
  ["total_found"]=>
  string(1) "1"
  ["time"]=>
  string(5) "0.004"
  ["words"]=>
  array(1) {
    ["苹果"]=>
    array(2) {
      ["docs"]=>
      string(1) "1"
      ["hits"]=>
      string(1) "1"
    }
  }
}

f6.png

最后修改:2019 年 05 月 13 日 03 : 07 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论