一、什么是sphinx

原理:sphinx将数据库中的表建立索引,php操作sphinx时,将要查询的关键字进行匹配,返回一个id,php通过id到数据库中查询数据。

二、下载

链接:https://pan.baidu.com/s/1ic3JTra4NKbEgxV0bAjXsw
提取码:b436

重要文件说明:

三、使用sphinx

1、复制csft_mysql.conf文件到sphinx根目录,并修改名称为sphinx.conf

2、配置sphinx.conf

#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/
#请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库 #源定义
source exhibit
{
type = mysql sql_host = localhost
sql_user = root
sql_pass = root
sql_db = test
sql_port = 3306
sql_query_pre = SET NAMES utf8 #要求:第一个字段必须是ID,如果不叫ID可以起个别名叫ID(类型必须是非零、唯一、不重复的整数)
#sql_query第一列id需为整数
#title、content作为字符串/文本字段,被全文索引
sql_query = SELECT itemid as id, title, keyword, address FROM destoon_exhibit sql_attr_uint = itemid #从SQL读取到的值必须为整数
#sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性 #命令行查询时,设置正确的字符集
sql_query_info_pre = SET NAMES utf8
#命令行查询时,从数据库读取原始数据信息
#sql_query_info = SELECT * FROM documents WHERE id=$id
} #index定义
index exhibit
{
source = exhibit #对应的source名称
path = G:/phpstudy/Sphinx/var/data/exhibit #请修改为实际使用的绝对路径,例如:/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:/phpstudy/Sphinx/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:/phpstudy/Sphinx/var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
log = G:/phpstudy/Sphinx/var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
query_log = G:/phpstudy/Sphinx/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}

3、安装sphinx服务器

4、创建索引

5、开启sphinx服务

6、安装php扩展

下载地址:

链接:https://pan.baidu.com/s/1kVInF6Whk2y0Vwsv9rwhvA
提取码:vd97
复制这段内容后打开百度网盘手机App,操作更方便哦

将php_sphinx.dll文件复制到如图地址:

重启服务器:

四、PHP操作Sphinx

<?php
/**
* Created by PhpStorm.
* User: Yang
* Date: 2019/8/14
* Time: 16:16
*/ $sphinx = new SphinxClient();
//设置searchd的主机名和TCP端口
$sphinx->SetServer("localhost", 9312);
//设置连接超时
$sphinx->SetConnectTimeout(3);
//控制搜索结果集的返回格式
$sphinx->SetArrayResult(true);
//设置全文查询的匹配模式
/*
SPH_MATCH_ALL 匹配所有查询词(默认模式).
SPH_MATCH_ANY 匹配查询词中的任意一个.
SPH_MATCH_PHRASE 将整个查询看作一个词组,要求按顺序完整匹配.
SPH_MATCH_BOOLEAN 将查询看作一个布尔表达式.
SPH_MATCH_EXTENDED 将查询看作一个Sphinx内部查询语言的表达式.
SPH_MATCH_FULLSCAN 使用完全扫描,忽略查询词汇.
SPH_MATCH_EXTENDED2 类似 SPH_MATCH_EXTENDED ,并支持评分和权重.
*/
$sphinx->SetMatchMode(SPH_MATCH_ANY);
$q = "2017";
$result = $sphinx->Query($q);
var_dump($result['matches']);
$id_array = array_column($result['matches'], "id");
$ids = implode(",", $id_array);
echo $ids;
array(20) {
[0]=>
array(3) {
["id"]=>
string(4) "9388"
["weight"]=>
int(2574)
["attrs"]=>
array(1) {
["addtime"]=>
string(10) "1488729600"
}
}
[1]=>
array(3) {
["id"]=>
string(5) "24571"
["weight"]=>
int(2574)
["attrs"]=>
array(1) {
["addtime"]=>
string(10) "1488729600"
}
}
[2]=>
array(3) {
["id"]=>
string(2) "68"
["weight"]=>
int(2569)
["attrs"]=>
array(1) {
["addtime"]=>
string(10) "1504195200"
}
}
[3]=>
array(3) {
["id"]=>
string(2) "81"
["weight"]=>
int(2569)
["attrs"]=>
array(1) {
["addtime"]=>
string(10) "1504195200"
}
}
...
}
9388,24571,68,81,3186,3213,3278,3444,3470,3645,3785,3843,3890,3907,4120,4164,4182,4212,4235,4568

注意:要通过定时器定时建立索引。

五、Linux下安装Sphinx

链接:https://pan.baidu.com/s/1tUF8Y5imp-ryHxoDDHH2MQ
提取码:4pav

tar -zxvf sphinx-3.0.3-facc3fb-linux-amd64.tar.gz

解压出来不用安装,像windows下一样配置即可。

Sphinx全文索引引擎的更多相关文章

  1. Sphinx全文索引 第一节

    1 使用场景:用来解决站内搜索的一些应用场景. 网站中的搜索(站内搜索) 系统后台中的搜索 第一种方式:PHP——>MySQL 第二种方式:MySQL<——>Sphinx:PHP—— ...

  2. Sphinx全文检索引擎测试

    数据表 1.documents CREATE TABLE `documents` ( `id` int(13) NOT NULL auto_increment, `group_id` int(11) ...

  3. Sphinx全文索引安装教程

    首先了解一下sphinx全文索引的相关知识官方网站:http://www.sphinxsearch.com/ 官方文档:http://www.sphinxsearch.com/docs/ 中文支持:h ...

  4. sphinx全文检索引擎

    今天刚刚学习了一下,就直接分享上去,有些还没有接触,如果有问题请指正,谢谢 sphinx是什么? Sphinx是一个全文检索引擎.主要为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能. S ...

  5. [Sphinx]全文索引Sphinx的使用配置

    -------------------------------------------------------------------------------------- 搜索分为两种: 1. 对结 ...

  6. centos7下搭建sphinx全文检索引擎

    Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用 程序更容易实现专业化的全文检索.Sphinx特别为一些 ...

  7. phpcms v9 配置sphinx全文索引教程

    英文介绍:http://www.sphinxsearch.com/docs/manual-0.9.9.html 一.首先需要在服务器上安装sphinx 在Windows上安装sphinx     1. ...

  8. PHP中的数据库一、MySQL优化策略综述

    前些天看到一篇文章说到PHP的瓶颈很多情况下不在PHP自身,而在于数据库.我们都知道,PHP开发中,数据的增删改查是核心.为了提升PHP的运行效率,程序员不光需要写出逻辑清晰,效率很高的代码,还要能对 ...

  9. Mysql常见的优化策略

    数据库设计方面优化 1.数据库设计符合第三范式,为了查询方便可以有一定的数据冗余.2.选择数据类型优先级 int > date,time > enum,char>varchar &g ...

随机推荐

  1. Windows10如何卸载OneDrive

    Windows10如何卸载OneDrive 来源 https://zhuanlan.zhihu.com/p/23985905 1) 禁止onedrive自启动简单的就是在任务管理器的启动中禁用oned ...

  2. mySql入门-(二)

    最近刚刚开始学习Mysql,然而学习MySql必经的一个过程就是SQL语句,只有按照文档从头开始学习SQL语句.学习的过程是痛苦的,但是学完的成果是甘甜的. SQL 语法 所有的 SQL 语句都以下列 ...

  3. Qt 利用飞机图片画五边形

    最近练习Qt,需要一个飞机在屏幕上画五边形.虽然达到的效果不是非常的理想,但是勉强还是达到了效果,欢迎大家指正.用到的飞机图片如下. 第一步:初始化,在构造函数里面,把图片向左旋转18° );ui.l ...

  4. linux基础命令之1

    1.创建文件夹:mkdir 文件夹名称 2.创建文件:touch  文件名称 3.编辑文件:vi 文件名称 4.保存文件::wq

  5. python之set集合、深浅copy初识、join()和fromkeys() 的用法

    一.set集合 特点: set集合是无序的,所以不存在索引. set集合中的每个元素都是不重复的. set集合中的每个元素都是可哈希的. 有增删改查操作: 1. 增加 add    当添加的内容重复时 ...

  6. git 在本地备份与指定不需要管理文件

    git 在本地备份 备份文件夹操作 在本地备份文件夹克隆一个不带工作区的仓库: 哑协议: git clone --bare <workspace>/.git yourwork.git gi ...

  7. java基础(10)---stream流

    一.stream的应用场景 for遍历的冗余场景:  stream的写法: 二.获取Stream流的常用方式 三.Stream的map映射方法 更简单的写法: 四.Stream的filter过滤方法 ...

  8. 项目(二)--完成练手feed流网站开发部署

    样式需要优化,最简版,还需新增逻辑. 点击跳转 源码

  9. 2019-2020-1 20199301《Linux内核原理与分析》第五周作业

    第四章·系统调用的三层机制(上) 本章的重点在于用户态程序如何触发系统调用? 一.用户.内核.中断 IntelX86有四种不同的执行级别.Linux操作系统中只采用了其中的0和3两个特权级别,分别对应 ...

  10. python get/post接口使用

    背景: 使用python调用get post接口,入参.出参都需要转换,在使用时经常会忘记其中的一步,本文用来记录,后面再使用时直接参考使用 代码如下 post: headers = {'Conten ...