0

0

coreseek配置以及增量索引合并索引

不言

不言

发布时间:2018-05-15 14:56:01

|

2247人浏览过

|

来源于php中文网

原创

引导:本人是个php菜鸟,公司的业务并不繁琐,但是最近使用到了全文搜索,就想着用sphinx。
大致分为三个部分,1:安装;2配置:3调用api 。这里主要说一下配置及调用api。安装的步骤我之前单独写了一个帖子可以去看看,如果不太明白可以去官网,安装步骤说的很清楚,废话不多说,开始。
一、为什么要用增量索引?其实我个人认为对数据量小的业务来说用增量索引完全没有必要。可以定时重新生成索引就ok了。增量索引就是对  截至到上次生成的索引 以后添加的内容单独生成索引,这样数据量比较小,并且不影响业务处理,然后定期进行索引合并,为了保持数据统一性,还需要定期从新生成索引。
1、上次生成索引的id需要记录下来,可以用一张表来存储。

CREATE TABLEtbl_pre_coursevideo( 
idint(11) NOT NULL DEFAULT '0', 
maxidint(11) NOT NULL DEFAULT '0', 
 PRIMARY KEY (id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、配置文件

source mysql
{
 type                    = mysql
    sql_host             = 127.0.0.1
    sql_user              = root
    sql_pass              = 123456
    sql_db                = test
    sql_port              = 3306
    sql_query_pre        = SETNAMES utf8
    sql_query_pre       = SETSESSION query_cache_type=OFF #如果这里报错去mysql配置文件修改
    sql_query_pre         = REPLACEINTO tbl_pre_coursevideo SELECT1, MAX(id) FROM tbl_coursevideo    #在刚才新建的表中将当前索引生成的最多id存起来,为增量索引做准备。


    sql_query                = SELECT id,title,create_time, subtitle,content,type FROM tbl_coursevideo WHERE id <=(SELECT maxid FROM tbl_pre_coursevideo WHERE id=1)
   #上面这条sql可以分为两部分WHERE 之前,是对数据的查询(根据自己的业务来定)where之后,是对刚才的记录
   最大ID 的筛选

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


    sql_field_string          = title  #字符串字段(可全文搜索,可返回原始文本信息)  
     sql_field_string          = subtitle  #字符串字段(可全文搜索,可返回原始文本信息)  
     sql_field_string          = content  #字符串字段(可全文搜索,可返回原始文本信息)  
}
source increment : mysql
{
sql_query_pre = SETNAMES utf8
sql_query                = SELECT id,title,create_time, subtitle,content,type FROMtbl_coursevideo WHERE id >(SELECT maxid FROM tbl_pre_coursevideo WHERE id=1)
#这是增量索引的数据源sql。和上面保持一致,唯一的变化,就是where条件之后,这里查询的是大于上次重新生成索引的id,即:刚刚添加的数据
}


#index定义
index mysql
{
   source            = mysql             #对应的source名称
    path            = /usr/local/coreseek/var/data/mysql#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    docinfo            = extern
    mlock            = 0morphology        = none
    min_word_len        = 1html_strip                = 0    #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
    charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
    #charset_dictpath = etc/                             #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
    charset_type        = zh_cn.utf-8}


index increment : mysql
{
  source=increment

    path            = /usr/local/coreseek/var/data/increment
    charset_dictpath = /usr/local/mmseg3/etc/
    charset_type    = zh_cn.utf-8}
#全局index定义
indexer
{
    mem_limit            = 128M
}


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

    log =/usr/local/coreseek/var/log/searchd_mysql.log       #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

    query_log =/usr/local/coreseek/var/log/query_mysql.log  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...


}

使用:
1、生成索引(一下命令都是我自己的安装环境路径,具体的修改成自己的)
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all  #生成索引
这时tbl_pre_coursevideo 表里会增加一条记录。存放的就是你内容表中的最大id

2、
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf       #开启后台进程

这时候对mysql数据源进行搜索的话其实已经是有数据的。
3、增量索引(内容表新增数据的前提)
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf   increment --rotate #执行完成以后会提示生成几条增量索引数据,即你刚才在内容表添加的数据条数。这时候其实就可以测试你的增量索引成功没cl->Query($keyword, ‘increment ‘);调用api时可以用增量索引查询你刚添加的内容
4、合并索引

usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf  –merge mysql increment  –rotate
cl->Query('查询的关键字', 'mysql'); //就能查询出来刚才的新添加的数据,以及以前的数据。

5、为了保持数据统一,还需要定时从新生成索引

雷驰html商城
雷驰html商城

可以生成html页面,大大减轻服务器负担,更加增加网站在搜索引擎出现的几率增机无限级分类功能,分类设置随心所欲 增加商品VIP价格、代理价格、批发价格功能,并且可以很轻松的扩展出更多价格 针对目前网上流行的上传攻击,重新编写了上传模块的代码,杜绝上传漏洞,确保商城的安全性 优化conn.asp 加强SQL注入预防机制,让系统坚不可催 增加订单费用加收百分比功能,邮费设置更合理 后台查看修改商品增加

下载
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all --rotate#--rotate 是不影响服务器搜索时可以添加这个属性

二、
1、调用api,这是我自己封装的,sphinxapi.php安装完成的文件里有这个类

require'sphinxapi.php';

class Sphinx {private$host='127.0.0.1';private$port=9312;private$cl;/*
     * @desc 构造函数  初始化sphinx对象
     */public function __construct() {$this->cl =new SphinxClient ();$this->cl->SetServer($this->host, $this->port);$this->cl->SetConnectTimeout(1);$this->cl->SetArrayResult(true);$this->cl->SetMatchMode(SPH_MATCH_EXTENDED2);$this->cl->SetRankingMode(SPH_RANK_WORDCOUNT);
    }/*
     * @desc 搜索
     * @param $page  页数
     * @param $pagesize  条数
     * @param $keyword  搜索关键字
     * @param $source 索引源
     */public function search($keyword, $p, $pagesize) {$page= ($p-1) *10;$this->cl->SetLimits($page, $pagesize); //分页$res=$this->cl->Query($keyword, $source); //sphinx 查询    }
  }

2、定时任务
yum install crontab  //安装
crontab -e           //打开编辑
然后定时 执行增量索引,合并索引,从新生成索引

住:如果说合并索引页成功了。但是查询出来的数据一直为空,那你就看看配置文件那

 path            = /usr/local/coreseek/var/data/increment#这里的配置,主索引是否和增量索引这只的路径一样,increment 就是索引的文件名,会在data文件夹下。

至此就讲了。如果有什么不会的,把这篇博客好好看看,包括注释,这都是我遇到的一些问题,都给注释了起来。如果有什么不明白的地方也可以给我留言,知无不尽。下次给大家讲一讲分词哪一块。

').addClass('pre-numbering').hide();
                    $(this).addClass('has-numbering').parent().append($numbering);
                    for (i = 1; i <= lines; i++) {
                        $numbering.append($('
').text(i));
                    };
                    $numbering.fadeIn(1700);
                });
            });

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

928

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

307

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

183

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

29

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

103

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

54

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

17

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

764

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

92

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.3万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 835人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号