Sphinx全文索引引擎
一、什么是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全文索引引擎的更多相关文章
- Sphinx全文索引 第一节
1 使用场景:用来解决站内搜索的一些应用场景. 网站中的搜索(站内搜索) 系统后台中的搜索 第一种方式:PHP——>MySQL 第二种方式:MySQL<——>Sphinx:PHP—— ...
- Sphinx全文检索引擎测试
数据表 1.documents CREATE TABLE `documents` ( `id` int(13) NOT NULL auto_increment, `group_id` int(11) ...
- Sphinx全文索引安装教程
首先了解一下sphinx全文索引的相关知识官方网站:http://www.sphinxsearch.com/ 官方文档:http://www.sphinxsearch.com/docs/ 中文支持:h ...
- sphinx全文检索引擎
今天刚刚学习了一下,就直接分享上去,有些还没有接触,如果有问题请指正,谢谢 sphinx是什么? Sphinx是一个全文检索引擎.主要为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能. S ...
- [Sphinx]全文索引Sphinx的使用配置
-------------------------------------------------------------------------------------- 搜索分为两种: 1. 对结 ...
- centos7下搭建sphinx全文检索引擎
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用 程序更容易实现专业化的全文检索.Sphinx特别为一些 ...
- phpcms v9 配置sphinx全文索引教程
英文介绍:http://www.sphinxsearch.com/docs/manual-0.9.9.html 一.首先需要在服务器上安装sphinx 在Windows上安装sphinx 1. ...
- PHP中的数据库一、MySQL优化策略综述
前些天看到一篇文章说到PHP的瓶颈很多情况下不在PHP自身,而在于数据库.我们都知道,PHP开发中,数据的增删改查是核心.为了提升PHP的运行效率,程序员不光需要写出逻辑清晰,效率很高的代码,还要能对 ...
- Mysql常见的优化策略
数据库设计方面优化 1.数据库设计符合第三范式,为了查询方便可以有一定的数据冗余.2.选择数据类型优先级 int > date,time > enum,char>varchar &g ...
随机推荐
- sqlite 一些常用的句子
有关SQLITE最完整的操作语句参考资料,应当是官方网址的http://www.sqlite.org/lang.html这个地方. select max(id) from table 取最大id ...
- 删除链表的倒数第 n 个节点
难度: 中等 leetcode地址: https://leetcode.com/problems/remove-nth-node-from-end-of-list/description/ 分析: 1 ...
- Math对象的一些方法
ceil(n) 返回n向上取整的最近的整数floor(n) 返回n向下取整到最近的整数max(a,b,c...) 返回最大值min(a,b,c...) 返回最小值round(n) 返回n四舍五入的最近 ...
- c++线程同步之信号量
// MutexExDlg.h : 头文件 // #pragma once // CMutexExDlg 对话框 class CMutexExDlg : public CDialogEx { // 构 ...
- Nginx 操作响应头信息的实现
前置条件:需要编译 ngx_http_headers_module 模块,才支持 header 头信息操作 add_header 意思为将自定义的头信息的添加到响应头,指令为 add_header n ...
- javascript中的prototype和__proto__的理解
在工作中有时候会看到prototype和__proto__这两个属性,对这两个属性我一直比较蒙圈,但是我通过查阅相关资料,决定做一下总结加深自己的理解,写得不对的地方还请各位大神指出. 跟__prot ...
- redis 异常 MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk
MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. 解决方 ...
- zabbix Server 4.0监控Flume关键参数
zabbix Server 4.0监控Flume关键参数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Flume本身提供了http, ganglia的监控服务.当然我们也可以使用 ...
- 私有容器镜像仓库harbor
私有镜像仓库Harbor 1.Harbor概述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用 ...
- Java判断对象类型是否为数组
判断对象是否为数组: public static void main(String[] args) { String[] a = ["1","2"]; if(a ...