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>';

}

php_sphinx安装使用的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  3. Sublime Text3安装JsHint

    介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...

  4. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  5. gentoo 安装

    加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...

  6. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  7. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  8. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  9. tLinux 2.2下安装Mono 4.8

    Tlinux2.2发行版基于CentOS 7.2.1511研发而成,内核版本与Tlinux2.0发行版保持完全一致,更加稳定,并保持对Tlinux2.0的完全兼容.Mono 4版本要求CentOS 7 ...

随机推荐

  1. python mooc 3维可视化<第一周第一单元>

    基本含义 数据->图像 分类 重点关注空间数据的可视化 方法 二维标量数据场 三维标量数据场 二位标量数据场 颜色映射法 等值线法 立体图法 层次分割法 三维标量数据场 面绘制法 体绘制法 展示 ...

  2. 初探uni-app

    第一步:下载 第二步:安装 第三步:创建项目 第四步:项目目录 项目运行 项目效果为 打包为原生App(云端) 运行打包 使用vue 效果如下,并不好看 使用代码如下 未完,待续.... 就是对着官网 ...

  3. 【水滴石穿】bstmy-blend-app

    这个项目是一个简单的底部导航切换页面 项目的地址为:https://github.com/Bstmy/bstmy-blend-app 先看效果 点击首页是首页面,点击个人中心是个人中心页面 先看代码 ...

  4. Lunix文件的读写权限问题

    今天把在windows平台build好的lunix执行文件复制到Lunix的虚拟机上,发现可执行文件不能执行了,后来才发现文件时有读写和可执行权限的,但是是可以更改的,右键属性,把可执行属性勾选上就可 ...

  5. gitlab 添加本地项目

    1.安装git    https://git-scm.com/downloads 2.新建工程 3.创建密钥 a.桌面右键 b.cd ~/.ssh/ 如果提示 “ No such file or di ...

  6. oracle管理索引

    索引是用于加速数据存取的数据对象,合理的使用索引可以大大降低I/O次数,从而提高数据访问性能.索引有很多种我们主要介绍常用的几种: 为什么添加了索引或,会加快查询速度呢? n  单列索引 单列索引是基 ...

  7. mysql锁机制之行锁(四)

    前言 顾名思义,行锁就是一锁锁一行或者多行记录,mysql的行锁是基于索引加载的,所以行锁是要加在索引响应的行上,即命中索引,如下图所示: InnoDB 支持多粒度锁(multiple granula ...

  8. BKDRHash算法的初步了解

    字符串hash最高效的算法,  搜了一下,  原理是: 字符串的字符集只有128个字符,所以把一个字符串当成128或更高进制的数字来看,当然是唯一的 这里unsigned不需要考虑溢出的问题,  不过 ...

  9. Servlet接口

    ServletRequest接口 ServletRequest的对象用于向Servlet提供客户端请求信息,如内容类型,内容长度,参数名称和值,标题信息,属性等. RequestDispatcher接 ...

  10. Android实战:手把手实现“捧腹网”APP(一)-----捧腹网网页分析、数据获取

    Android实战:手把手实现"捧腹网"APP(一)-–捧腹网网页分析.数据获取 Android实战:手把手实现"捧腹网"APP(二)-–捧腹APP原型设计.实 ...