coreseek3.2.14+win版 全文检索

1,这个是我的csft_mysql_.conf 配置文件。

#源定义
source mysql
{
    type                    = mysql

    sql_host                = xxxxxxxx
    sql_user                = root
    sql_pass                = xxxxxx
    sql_db                  = kindle_law
    sql_port                = 3306
    sql_query_pre           = SET NAMES utf8

    sql_query               = SELECT law_id as id, law_id, cat_id, create_time, title, descriptions FROM kl_tool_law_articles
                                                              #sql_query第一列id需为整数
                                                              #title、content作为字符串/文本字段,被全文索引
    sql_attr_uint           = law_id           #从SQL读取到的值必须为整数
    sql_attr_timestamp      = create_time      #从SQL读取到的值必须为整数,作为时间属性

    sql_query_info_pre      = SET NAMES utf8     #命令行查询时,设置正确的字符集
    sql_query_info          = SELECT * FROM kl_tool_law_articles WHERE law_id=$id #命令行查询时,从数据库读取原始数据信息
}
source mysql02
{
    type                    = mysql

    sql_host                = xxxxxxxxx
    sql_user                = root
    sql_pass                = xxxxxx
    sql_db                  = kindle_law
    sql_port                = 3306
    sql_query_pre           = SET NAMES utf8

    sql_query               = SELECT law_id as id, law_id, create_time, title, descriptions FROM kl_tool_case_articles
                                                              #sql_query第一列id需为整数
                                                              #title、content作为字符串/文本字段,被全文索引
    sql_attr_uint           = law_id           #从SQL读取到的值必须为整数
    sql_attr_timestamp      = create_time      #从SQL读取到的值必须为整数,作为时间属性

    sql_query_info_pre      = SET NAMES utf8     #命令行查询时,设置正确的字符集
    sql_query_info          = SELECT * FROM kl_tool_case_articles WHERE law_id=$id #命令行查询时,从数据库读取原始数据信息
}


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

2,配置完成后 ,点击开始按钮输入cmd ,右键cmd.exe 以管理员身份运行,cd到解压出来的coreseek文件下

3.建立索引

    进入coreseek文件下  输入  

    bin\indexer -c etc\csft_mysql.conf --all  生成索引

    bin\indexer -c etc\csft_mysql.conf --all --rotare 重新生成索引

3. 测试查询

    输入    bin\search -c etc\csft_mysql.conf xxxx

    xxxx 为要查询的内容

    dos下最好只查询英文内容,因为dos下由于编码原因,不一定能查询出来。

    dos下的查询主要是起到测试的作用,真正的查询应该还是要通过调用API

4.searchd 安装成为一个服务(之后可以关闭dos窗口使用)

    .\bin\searchd.exe -c .\etc\csft_mysql.conf

安装完成就可以在调用api了

!!!如果配置多表,只需要多个数据源scource 和多个索引index即可   配置如上

使用:

1,tp5中调用 sphinxapi.php 文件放在了extend  如下:

2,代码显示

public function searchlist(Request $request){
        $params = $this->get_post_request();
        // case:案例;law:法规;judicialView:司法观点

        Loader::import('sphinxapi','../extend/');
        $sphinx = new \SphinxClient();
        $sphinx->SetServer('127.0.0.1',9312);//链接
        //sphinxapi 全文检索
        isset($params['keyword']) ? $keyword = $params['keyword'] : $keyword = '测试';
        //SPH_MATCH_ALL, 匹配所有查询词(默认模式); SPH_MATCH_ANY, 匹配查询词中的任意一个; SPH_MATCH_EXTENDED2, 支持特殊运算符查询
        $sphinx->setMatchMode(SPH_MATCH_ALL);
        $sphinx->setMaxQueryTime(30);                                        //设置最大搜索时间
        $sphinx->SetArrayResult(false);                                        //是否将Matches的key用ID代替
        $sphinx->SetSelect ( "*" );
        //设置返回信息的内容,等同于SQL
        $sphinx->SetRankingMode(SPH_RANK_BM25);
        $sphinx->SetLimits ( 0, 10, 1000, 0 );                                //设置结果集偏移量  SetLimits
        $result = $sphinx->query($keyword,"mysql02");         #[coreseek]关键字,[mysql]数据源source

//        halt($result);
        $err = $sphinx->GetLastError();
        if(!isset($result['matches'])){
            echo '未检索到内容';
            exit;
        }
        $ids = join(',',array_keys($result['matches']));
        $datalist = db('tool_case_articles')->whereIn('law_id',$ids)->select();
//        dump($datalist);exit;
        $opts=array(
            "before_match"=>"<font color='red'>",
            "after_match"=>"</font>",
        );
        foreach($datalist as $k=>$v){
            $final[]=$sphinx->buildExcerpts($v,"mysql02",$keyword,$opts);
            /*echo "标题:".$final['2']."<br>";
            echo $final[9].'<hr>';*/
        }

        $return_data = [
            'pageIndex' => $params['pageIndex']??1,
            'pageSize' => $params['pageSize'] ?? 10,
            'total' => $result['total'],   //本次返回数量
            'total_found' => $result['total_found'],  //系统总数量
            'time' => $result['time'] ,
            'itemts' => $final,
        ];

        $this->result($return_data, '2000', '法律法规搜索', 'json');
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值