php_sphinx安装使用

php_sphinx安装使用

Sphinx的简介:

Sphinx是一个独立的全文索引引擎,意图为其他应用提供高速低空间

占用、搜索结果高相关度全文搜索功能。Sphinx可以非常容易的与

SQL数据库和脚本语言集成。内置MySQL和PostgreSQL数据库数据源

的支持。搜索API支持PHP、Python、Perl、Rudy和Java。

Sphinx的使用背景:在mysql中优化的时候,对varchar,char,text对这些数据进行查询时,如果我们使用like ‘%单词’,是无法使用到索引,如果网站的数据量比较大,会拖垮网站的速度。

 

Sphinx的原理:

先对数据源建立索引。采用分词技术,形成一个索引表。当查询某个单词的时候,先到sphinx建立的索引去查找,然后再去数据库用id查找。

 

Windows 安装sphinx的过程:

下载完后解压后,把etc目录下面,把mysql的模板配置文件csft_mysql.conf拷贝到上级目录,并修改为sphinx.conf。然后对其配置数据源,模板里面都有详细注释。

然后去bin目录根据配置好的文件生成生成索引文件:

命令:

Indexer.exe -c sphinx.conf -all   // –all:为配置文件中所有的索引创建索引文件

执行sphinx下的一个程序indexer.exe –c配置文件 –all | 索引的名字

Indexer.exe -c sphinx.conf 索引的名字(sphinx.conf里面配置的)

安装启动sphinx:

语法:

searchd.exe –c 配置文件 –install

该命令对应的参数:

searchd开启服务端

searchd -c 配置文件 索引名称

服务器端默认监听 9312 端口。常用命令:

-c : 指定配置文件路径

–stop : 停止当前服务

–status : 查看当前状态

–install : 安装为 windows 服务

–delete: 删除windows服务

–port  port: 监听的端口

–index  indexName : 只查询某个索引,默认查询所有索引

 

服务启动后,去services.msc 启动 searchd ,验证的话查看端口 netstat -an  看看是否有9312开启

 

 

代码实现:

<?php

require(‘sphinxapi.php’); // 这个文件在sphinx的api目录里

$sc = new SphinxClient(); // 生成客户端

$sc->setServer(‘localhost’,9312); // 设置服务器

$res = $sc->query(‘武侠’,’ mysql’); // 第一个参数是查询内容,第二个参数是索引的名称(sphinx.conf里面配置)

$ids = implode(“,”,array_keys($res[‘matches’]));

$conn = mysqli_connect(“localhost”,”root”,”root”,”test”);

mysqli_query($conn,”set names utf8″);

$sql = “select * from test where id in($ids)”;

$res = mysqli_query($conn,$sql);

$list = array();

while($row = mysqli_fetch_assoc($res)){

       $list[] = $row;

}

mysqli_free_result($res);

mysqli_close($conn);

foreach($list as $v){

       echo $v[‘name’].'<br/>’.$v[‘desc’].'<hr>’;

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113350.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VLAN作用概述_发挥三个作用是指哪三个作用

    VLAN作用概述_发挥三个作用是指哪三个作用VLAN作用

    2022年8月5日
    7
  • MySQL常用命令大全(完整)「建议收藏」

    MySQL常用命令大全(完整)「建议收藏」打开Linux或MacOS的Terminal(终端)直接在终端中输入windows快捷键win+R,输入cmd,直接在cmd上输入1、mysql服务的启动和停止netstopmysqlnetstartmysql启动失败可按快捷键win+R,输入services.msc,找到MySQL服务器的名称启动2、登陆mysqlmysql(…

    2022年6月30日
    23
  • uni-app引用echarts

    uni-app引用echarts1 首先在 uni app 中不支持包下载所以得自己先新建一个项目 然后进入到这个目录下 执行 npminit 接下来一路回车即可 2 下载所需要的库 npminstallec echartssave3 引用 5 是页面代码 importechart components echarts echarts vue 下面的是 echarts vue 的代码 代码里 script src static echarts min

    2025年11月24日
    4
  • qtabwidget设置样式_qt qwidget

    qtabwidget设置样式_qt qwidget1、转载一篇当tab页多时,左侧的曲线问题。下面是原文:当tab个数大于一定个数时,会出现如下图左侧白线所示,这个是Qt自带的,作用是点击回到第一个tab隐藏方法:设置qssQTabBar::tear{width:0px;border:none;}原文链接:https://blog.csdn.net/qq411633267/article/details/1056847582、通用样式:…

    2022年9月24日
    2
  • 域名转接公告

    域名转接公告

    2021年7月25日
    75
  • 网页中图片去色问题是什么_网页问题

    网页中图片去色问题是什么_网页问题网页中图片去色问题网页中经常需要一种js效果,就是鼠标经过某张图片,图片去色。为了不加载两张图片(一张彩色和一张灰色),在网上找到了一些方法。方案一:使用grayscale.js可以使用grayscale.js来实现图片的去色,但是有个缺点就是它可以实现鼠标经过图片去色,但是实现不了鼠标移开之后,图片恢复颜色。使用demo:window.onload=function(

    2022年10月6日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号