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

 

個人博客:https://www.521bug.cn

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章