参考:https://ke.qq.com/webcourse/index.html#cid=309238&term_id=100366592&taid=2108644259051510(腾讯课堂)
http://www.php.cn/code/24992.html(视频)

首先用sphinx有两种方法,一种是php装扩展,一种是调用sphinx服务,它提供很丰富的接口所以我是用的后者。
然后还要注意网上大部分都是2.*的sphinx教程需要安装编译和make,然后3.0后就是直接下载安装使用了。

首先直接去官网下载,我找的是3.1的,然后重点来了,复制etc下面的sphinx.mini.conf.dist复制到bin下面不然会报错。具体如下

 yum install mariadb-devel postgresql-devel unixODBC-devel libmysqlclient18 libmysqlclient-dev libmysqlcppconn7 libmysqlcppconn-dev
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#source question
{type           = mysqlsql_host        = localhostsql_user        = rootsql_pass     = 456123wtsql_db           = blogsql_port     = 3306 # optional, default is 3306sql_query        = SELECT questionid,question,questionanswer as attr_questionanswer,questionid as attr_questionid,question as attr_question from x2_questions
#   sql_attr_string     = attr_question
#   sql_attr_string     = attr_questionanswersql_field_string  = attr_questionsql_attr_uint       = attr_questionid#sql_attr_timestamp   = date_added
}index questionindex
{source         = questionpath         = /var/data/questionindex
#   infix_fields        = attr_questionanswer,attr_question
}#index testrt
#{
#   type            = rt
#   rt_mem_limit        = 128M
#
#   path            = /var/data/testrt
#
#   rt_field        = title
#   rt_field        = content
#   rt_attr_uint        = gid
#}indexer
{mem_limit      = 128M
}searchd
{listen         = 9312listen           = 9306:mysql41log          = /var/log/searchd.logquery_log        = /var/log/query.logread_timeout       = 5max_children        = 30pid_file       = /var/log/searchd.pidseamless_rotate      = 1preopen_indexes     = 1unlink_old      = 1workers         = threads # for RT to workbinlog_path      = /var/data
}

配置好了后用indexer生成索引命令是:

indexer --all    // 生成全部索引
// 或者
./indexer -c sphinx.conf questionindex  // 生成一个索引./searchd -c sphinx.conf /开启服务

然后进入api文件夹复制cp sphinxapi.php /usr/local/nginx/html/blog/public/sphinx
新建个文件try.php内容如下:

<?php
header ( 'Content-Type: text/html;charset="UTF-8"' );
if ($_GET) {// 关键词$keyword = urldecode ( trim ( strip_tags ( $_GET ['keyword'] ) ) );if ($keyword) {// 包含Sphinx的api文件require_once 'sphinxapi.php';// sphinx服务器地址$server = '127.0.0.1';// 端口$port = 9312;// 索引名 为*时表示搜索所有索引,多个用逗号$indexName = 'questionindex';// 分页页码$page = intval ( $_GET ['page'] ) > 1 ? intval ( $_GET ['page'] ) : 1;// 每页显示的数量$pageSize = 30;$sphinx = new SphinxClient ();// 建立连接$sphinx->SetServer ( $server, $port );$sphinx->SetArrayResult ( true );// 设置返回为数组// 连接超时时间(非常必要,比如sphinx服务器挂了等异常情况) 单位为s,秒$sphinx->SetConnectTimeout ( 3 );// 最大查询时间 单位为ms,毫秒$sphinx->SetMaxQueryTime ( 2000 );// 按分页取结果$sphinx->SetLimits ( ($page - 1) * $pageSize, $pageSize ); //第一个参数为offset,第二个参数为limit// 模式// $sphinx->SetMatchMode(SPH_MATCH_EXTENDED);
//        $sphinx->SetFilter('attr_questionid', array(3262,2), false);// 取到的原始数据$orgDatas = $sphinx->Query ( $keyword, $indexName );// 调试用,如果有错误的话,可以打印$errors的值$errors = $sphinx->GetLastError ();echo "<pre>";print_r($orgDatas);die;
//        var_dump ( $errors );// 下面是对结果的处理$datas = array('goods'=>array(),'total'=>0);if ($orgDatas['total'] > 0) {$datas['total'] = $orgDatas['total'];foreach ($orgDatas['matches'] AS $val) {$val['attrs']['goods_id'] = $val['attrs']['goods_id_new'];unset($val['attrs']['goods_id_new']);$datas['goods'][] = $val['attrs'];}}var_dump($datas);}
} else {echo '<form method="get"><input type="type" name="keyword"><input type="submit" value="商品搜索"></form>';
}
?>

打印结果

最后一般的sphinx比较倾向用于十几万条的查询,查出来的id集合然后到mysql里面再in查询下就ok了,另外sphinx支持分页,注意了。

遇到了点问题,首先执行indexer --all报错:sql_connect: failed to load libmysqlclient (or libmariadb),然后找了很多资料,找到这个老哥博客,我的/usr/lib/libmysqlclient.so有这个文件,然后vim /etc/ld.so.conf添加/usr/local/mysql/lib保存后执行ldconfig

然后再执行生成索引报错:**sql_connect: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’**自己解决:ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock OK了

安装coreseek

sphinx安装及使用相关推荐

  1. Sphinx安装与基本设置

    Sphinx安装与基本设置 Sphinx是什么?如果你还不知道,那就放狗吧- 简单引用一下官方wiki的文章: Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全 ...

  2. centos 下 sphinx安装和配置

    一.安装前提必备先安装工具 yum -y install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml ...

  3. SPHINX安装步骤

    ================================Start 安装SPHINX Start================================ yum install gcc ...

  4. Sphinx安装流程及配合PHP使用经验

    1.什么是Sphinx Sphinx是俄罗斯人Andrew Aksyonoff开发的高性能全文搜索软件包,在GPL与商业协议双许可协议下发行. 全文检索式指以文档的全部文本信息作为检索对象的一种信息检 ...

  5. linux安装sphinx

    从sphnix网站下载sphinx源码包,当前最新版本是: http://sphinxsearch.com/files/sphinx-0.9.9.tar.gz.当然,还需要保证你的系统已经安装了mys ...

  6. php安装sphinx扩展,安装php的sphinx扩展模块

    转自 http://blog.csdn.net/fenglailea/article/details/38115821 首先你必须已经安装过了sphinx 如何安装sphinx请看:http://bl ...

  7. CentOS6.9编译安装Sphinx并使用php7的sphinx扩展实现全文搜索

    本篇笔记记录了CentOS6.9编译安装Sphinx,编译安装php-sphinx扩展,并使用php7的sphinx扩展实现全文搜索的过程 nginx+mysql+php安装请参考以下笔记: Cent ...

  8. 使用PHP+Sphinx建立高效的站内搜索引擎

    1.    为什么要使用Sphinx   假设你现在运营着一个论坛,论坛数据已经超过100W,很多用户都反映论坛搜索的速度非常慢,那么这时你就可以考虑使用Sphinx了(当然其他的全文检索程序或方法也 ...

  9. centos7安装sphinx2.2.11

    为什么80%的码农都做不了架构师?>>>    推荐通过二进制包安装,简单快捷 1.如果你本机没有安装mysql5.6,会提示缺少 libmysqlclient.so.18 文件,这 ...

  10. Sphinx+gitee+Read the Docs搭建在线文档系统

    本文介绍一种在线文档系统的搭建,需要借助Sphinx.gitee和Read the Docs. Sphinx是一个功能强大的文档生成器,具有许多用于编写技术文档的强大功能 gitee是一种版本管理系统 ...

最新文章

  1. 数据中心网络流量精细运维
  2. Android驱动开发读书笔记六
  3. 一个简单函数的反汇编分析
  4. linux中查看文件指定行的数据
  5. 生命游戏c语言代码easy,c++生命游戏源码
  6. DTW动态时间规整算法
  7. MIT名誉校长:机器学习会成为像Word一样的工具
  8. 由炮灰模型到“微软钻石题”
  9. 入职必备两小时入门SVN(一)
  10. Vue中引入css文件
  11. Myeclipse快键键
  12. 第三方登录页面java_第三方登录接口使用说明(JAVA)
  13. SHP格式以及SHP矢量数据编辑软件ShpEditor介绍
  14. 常用词句或缩略语汇总
  15. 服务器维护合同需要交印花税吗,服务合同需要交印花税吗
  16. 1-以太坊私钥公钥地址生成
  17. 深蓝学院-多传感器融合定位课程-第4章-点云地图构建及基于地图的定位
  18. 第三部分:成交动力学之十大成交激素——9、紧迫感
  19. Prometheus 告警配置以及抑制规则inhibit_rules 说明
  20. linux用户管理相关

热门文章

  1. fastlane二开java_Fastlane 使用手册(二)
  2. C语言复习 随手写3
  3. 【printf】打印数值、打印二进制、打印十六进制、sprintf
  4. 马斯克:特朗普都快80了,我支持个年轻的!懂王回怼:忘了当初跪求补贴?...
  5. 物流项目管理的团队建设 (zt)
  6. 最大公约数是啥意思_要求最大公约数是什么含义(如何求最大公约数)
  7. springboot+老年康复中心信息管理系统 毕业设计-附源码250859
  8. 【老生谈算法】matlab在材料力学中的应用
  9. Flutter混合栈管理
  10. 新年贺卡用python_Photoshop 一张简洁的新年贺卡制作方法