当前位置: 首页 > news >正文

sphinx的介绍安装+支付+邮箱案例

一、sphinx的基本介绍

1、使用背景

当对大文本数据进行单词匹配查询时,如:有一个歌曲网站,数据库中
收集着上百万首歌曲的信息,如果要查询出歌词中带“爱情”的所有歌
曲,典型的做法是执行如下SQL语句:ELECT * FROM songs WHERE content LIKE "%爱情%"。
但是在MYSQL中以%开头的查询无法使用索引,所以这条SQL语句将执
行全表扫描,性能极差。

MyISAM引擎中的全文索引是专门对文本创建
索引的,但对中文的支持不好。
好的解决方案:使用sphinx !

2、sphinx的原理

第一步:对应数据源建立索引

中文分词技术,
今天 1
下雨 1
明天 1,2,3
学习 2
第二步:执行查询,返回查询到单词所在,mysql里面记录的id
php要把查询的单词给sphinx软件,软件拿到要查询的单词后,从索引里面进行匹配。返回该单词在mysql表里面记录的id、php拿到单词所在的额id后,根据该id去mysql里面查找数据。

3、什么是Coreseek

Coreseek 是一款中文全文检索/搜索软件,基于Sphinx研发并独立发布,
专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论坛/站内搜索
数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景

二、开始安装执行

1、下载软件,解压后,拷贝到指定的目录

2、建立一个sphinx的配置文件。

拷贝一份csft_mysql.conf文件到上一级目录,并改名为shpinx.conf


3、建立索引

配置数据源 配置索引 配置服务器端的信息。
(1)配置数据源,
语法:source 数据源的名字
在一个配置文件中,可以配置多个数据源的。
(2)针对数据源配置索引,
一个数据源对应一个索引的配置,

语法:index 索引的名字

(3)配置sphinx服务器端信息。

4、根据sphinx.conf的配置,创建索引

以超级管理员以进入进入到d:/Apache/sphinx/bin目录
语法:
indexer -c 配置文件 索引的名字

建立的索引文件。

5、安装sphinx(coreseek)启动服务,
以管理员进入cmd进入到sphinx/bin目录,使用searchd.exe命令
语法:searchd -c 配置文件 --install

启动服务

默认的端口号是9312,
总结:
(1)针对数据源建立索引,要配置的是数据源,数据源对应的索引,服务器端配置
使用indexer命令完成索引的创建。
(2)启动sphinx的服务进行查询
三、使用php查询测试
1、要拷贝sphinx的接口文件到php项目中来。

具体的代码:

四、查询的关键词要添加样式显示

使用:$sc->buildExcerpts()来完成对应关键词添加样式来显示

$sc->buildExcerpts(一条记录的数组,索引的名字,查询的关键词,关键词添加的样式)

$sc->buildExcerpts(一条记录的数组,索引的名字,查询的关键词,array(
‘before_match’=>’<font color=”red”/>’,
‘after_match’=>’</font>’

))
该函数返回的是一个索引的数组,因此在输出时要使用下标来显示

五、SPHINX的匹配模型

1、SPH_MATCH_ALL 完全匹配所有的词

如“冬天 的 雪”,并不会匹配 “我爱冬天”,
但可以匹配 “我的朋友,爱冬天,和雪”。
因为“冬天的雪” 被分成 “冬天”,“的”,“雪”三个词,匹配条件是同时包含
这三个词,“我爱冬天”里只包含一个“冬天”

2、SPH_MATCH_ANY: 匹配任意一个词

如“冬天 的 雪”,并会匹配 “我爱冬天”。
"冬天的雪“ -》 ”冬天“ ”的“ ”雪“
因为“我爱冬天”里有一个“冬天”相匹配。

六、增量索引建立

原来有1000万条记录,建立完成索引了,
后来又添加了500条记录,
思路:把后面添加的记录单独建立索引,建立的增量索引再合并到主索引上面。
具体实时:
(1)新建一张表,用于记录电影最大的id,当主索引建完之后,表里面就记录最大的id,
(2)建立增量索引是主查询,就使用条件了。
select id,title,description from dede_archives where id>(select max_id from a)

步骤:
(1)新建一张表
create table a(max_id int);

(2)修改主数据源

(3)添加增量数据源

(4)配置增量索引

(5)重新建立主索引

添加数据,进行建立增量索引

(6)把增量索引合并到主索引上面

indexer -c配置文件 --merge 主索引的名字 增量索引的名字 --rotate(不关闭服务强制

http://www.jsqmd.com/news/660876/

相关文章:

  • 终极解密:OpenCore如何解决PC安装macOS的三大核心挑战
  • PL2303老芯片驱动解决方案:让Windows 10/11完美识别你的串口设备
  • 低代码平台接入LLM代码生成器后,API契约崩塌、权限越界、审计失效——3类高危漏洞深度复盘(含可运行检测脚本)
  • 直流电能表电流采样技术大盘点:为何分流器优势显著?
  • 如何快速下载番茄小说:一站式解决方案指南
  • 如何在Windows资源管理器中实现APK/IPA文件图标完美显示?ApkShellext2终极解决方案
  • 【生成即度量】:用AST语义指纹替代行数统计,实现AI代码贡献度原子级归因(实测降低技术债误判率41%)
  • 解放双手!如何用MaaYuan免费开源游戏自动化工具告别重复游戏日常
  • Path of Building:流放之路构建思维的革命性重塑
  • 从零到一:用MIT App Inventor轻松构建跨平台移动应用的5个关键技巧
  • 从‘depth_to_space’到图像分块:手把手拆解Einops中rearrange的两种高级用法
  • MyBatis 查询结果映射失败问题
  • 解决Windows 10/11下PL2303老芯片兼容性问题的终极技术指南
  • Nintendo Switch第三方控制器终极方案:sys-con深度技术解析与应用指南
  • ESP8266+OneNET实战:从温湿度传感器到微信通知的完整物联网项目
  • 别再用Profiler看AI代码了!奇点大会宣布传统性能分析工具对LLM生成代码失效率高达83.6%
  • GME多模态向量-Qwen2-VL-2B多场景落地:跨境电商多语言图文同步检索
  • 5个简单步骤彻底解决Windows桌面应用部署难题:.NET Windows Desktop Runtime终极指南
  • 别再只用plot画线了!用Matplotlib搞定函数图像,从数学公式到漂亮图表(附完整代码)
  • 告别手工分层!LayerDivider智能插画分层工具让你的创作效率翻倍
  • 下一代智能门禁技术演进:从身份验证到认知决策的架构设计与落地实践
  • 【智能代码生成与发布管理实战指南】:20年DevOps专家亲授5大避坑法则,90%团队仍在盲目踩雷?
  • 手把手教你:如何为你的汽车项目搞定UNECE R158认证(含测试流程详解)
  • 【智能代码生成可维护性评估黄金标准】:20年架构师首次公开5大维度量化模型与3个致命陷阱
  • 从Transformer到图注意力:手把手拆解TSGM-Net如何一步步提升点云配准精度
  • 从‘I think, therefore I am’说起:BERT的Position Embedding如何让模型理解词语顺序?
  • 从4QAM到256QAM:理论误码率曲线仿真与性能对比分析
  • 2026年靠谱的行星关节模组制造商推荐,为你提供高性价比之选 - 工业品牌热点
  • 2025最权威的五大降重复率平台实际效果
  • Qwen3-14B部署避坑指南:常见问题解决与性能优化技巧