一、
1、先得包含下载的文件
include'./sphinx/api/sphinxapi.php';
$sphinx= new SphinxClient();
$sphinx->SetServer('192.168.1.139',9312);
//SPH_MATCH_ALL匹配所有查询词(默认模式)  
        $sphinx->SetMatchMode ( SPH_MATCH_ALL);  
        //匹配查询词中的任意一个  
        $sphinx->SetMatchMode ( SPH_MATCH_ANY);  
        //将整个查询看作一个词组,要求按顺序完整匹配  
        $sphinx->SetMatchMode ( SPH_MATCH_PHRASE); 
 
$data =$sphinx->Query("iOS","*"); //这里的*代表匹配所有定义好的规则,也可以写在配置文件中index对应的名称,IOS表示值
$data=$data['matches'];
        //判断键值是否存在  
        if(!array_key_exists("matches",$data)){  
            exit("没有检索到您需要的信息");  
        }  
        // 1.Matches中就是查询的结果了,但是仿佛不是我们想要的数据。  
        // 2.根据官方的说明是Sphinx并没有连接到MySQL去取数据,只是根据它自己的索引内容进行计算;  
        // 3.因此如果想用Sphinx提供的API去取得我们想要的数据,还必须以查询的结果为依据(也就是ID为依据);  
        // 4.根据ID再次查询MySQL从而得到我们想要的数据。  
        //获取主键 (这里的主键就是数据在数据库中的自增ID) 通过ID在根据数据库 查询出数据  
        $key = array_keys($data['matches']);  
        //把数组元素组合为一个字符串  
        $key = join(',',$key);  
        //根据获取到的ID在查询数据库  
        $query = new \yii\db\Query();  
        //使用框架中的in 哈希格式 来检索  
        $blogInfo = $query->from(['b'=>'ex_blog','bt'=>'ex_blog_type'])->where(['id'=>[$key]])->all();  
        //将数组转换为Json类型  
        echo json_encode($blogInfo); 
 
二、关键字变红
include'./sphinx/api/sphinxapi.php';
$sphinx= new SphinxClient();
$sphinx->SetServer('192.168.1.139',9312);
$res=$sphinx->Query("iOS","*"); //这里的*代表匹配所有定义好的规则,IOS表示值
$opt=array("before_match"=>"<font style='font-weight:bold;color:#f00'>","after_match"=></font>"); 添加一个标签
$row = 一条数据
$row =$sphinx->BuildExcerpts($row,"lg",'IOS',$opt); 替换一条,多条循环即可.。news即我们在csft_mysql.conf 配置的索引名,本实例为lg
 
 
 
!!!!!!!
做到这里以经完成了一大半,但还没有做到实时索引,假设数据库表里面的数据增加就没有办法搜索到新增的数据,这里写了一个shell脚本 main.sh
#!/bin/bash
/usr/local/coreseek/bin/inderer main --rotate >>/usr/local/coreseek/var/log/main.log
 
脚本delta.sh
#!/bin/bash
/usr/local/coreseek/bin/inderer delta --rotate >>/usr/local/coreseek/var/log/delta.log
 
然后将这两个脚本放在linux定时任务器每一分钟执行一次,代码如下
*/5 * * * * /usr/local/coreseek/init/delta.sh 00 03 * * * /usr/local/coreseek/init/main.sh
 
 
文件下载地址:https://github.com/fangwenqiang/files

sphinx使用的更多相关文章

  1. 利用sphinx为python项目生成API文档

    sphinx可以根据python的注释生成可以查找的api文档,简单记录了下步骤 1:安装 pip install -U Sphinx 2:在需要生成文档的.py文件目录下执行sphinx-apido ...

  2. 安装PHP sphinx扩展 sphinx-1.1.0/sphinx.c:105:2: error: too few arguments 错误

    表现: /home/sphinx-1.1.0/sphinx.c: In function 'php_sphinx_client_read_property':/home/sphinx-1.1.0/sp ...

  3. 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)

          一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...

  4. coreseek+sphinx+mysql+thinkphp整合

    1.安装coreseek 1.1首先升级或安装系统依赖库 yum install make gcc g++ automake libtool mysql-client libmysqlclient15 ...

  5. 全文检索解决方案(lucene工具类以及sphinx相关资料)

    介绍两种全文检索的技术. 1.  lucene+ 中文分词(IK) 关于lucene的原理,在这里可以得到很好的学习. http://www.blogjava.net/zhyiwww/archive/ ...

  6. 如何将Sphinx生成的html文档集成进入Django

    参考 http://stackoverflow.com/questions/10594618/django-and-sphinx-how-to-view-the-html-sphinx-generat ...

  7. Linux下搭建coreseek(sphinx+mmseg3)全文检索

    测试平台:Center OS 1.设置环境,升级/安装系统基础依赖包:m4.autoconf.automake.libtool #设置路径和中文环境: $ export PATH=/usr/local ...

  8. debian下使用Sphinx异常“Could not import extension sphinx.builders.linkcheck (exception: cannot import name SSLError)”的解决

    最近使用到Sphinx编译文档,出现如下异常: Extension error:Could not import extension sphinx.builders.linkcheck (except ...

  9. [搜索引擎]Sphinx的介绍和原理探索

    What/Sphinx是什么 定义 Sphinx是一个全文检索引擎. 特性 索引和性能优异 易于集成SQL和XML数据源,并可使用SphinxAPI.SphinxQL或者SphinxSE搜索接口 易于 ...

  10. Sphinx安装配置应用

    Sphinx 是由俄罗斯人Andrew Aksyonoff开发的一个全文搜索引擎.意图为其他应用提供高速.地空间占用.高结果相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成 ...

随机推荐

  1. SQL基础一

    一.什么是SQL? SQL是结构化查询语言 SQL使我们有能力访问数据库 SQL是一种ANSI的标准计算机语言 二.SQL能做什么? SQL 面向数据库执行查询 SQL 可从数据库取回数据 SQL 可 ...

  2. java反射基础知识(二)

    1. 了解 Java 中的反射 1.1 什么是 Java 的反射 Java 反射是可以让我们在运行时获取类的函数.属性.父类.接口等 Class 内部信息的机制.通过反射还可以让我们在运行期实例化对象 ...

  3. GIT学习笔记(4):远程分支

    GIT学习笔记(4):远程分支 远程分支 远程分支是什么 远程分支是对远程仓库中的分支的索引.它们是一些无法移动的本地分支:只有在GIT进行网络交互时才会更新.远程分支就是书签,提醒着你上次连接远程仓 ...

  4. GIT学习笔记(3):分支管理

    GIT学习笔记(3):分支管理 何谓分支 GIT是如何存储数据的 GIT不是存储文件差异或者变化量,而是一系列文件的快照.在Git提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容 ...

  5. c3p0连接不上sql server

    1.首先判断sqlserver是否安装成功 2如果sqlserver正常运行 可能是因为没有打开1433端口,按以下步骤设置tcp/ip enabled 打开之后再重新启动sql server服务,按 ...

  6. Spring @Qualifier l转

    当候选 Bean 数目不为 1 时的应对方法 在默认情况下使用 @Autowired 注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个.当找不到一个匹配的 Bean ...

  7. HashMap与ConcurrentHashMap、HashTable

    (1)HashMap的线程不安全原因一:死循环 原因在于HashMap在多线程情况下,执行resize()进行扩容时容易造成死循环. 扩容思路为它要创建一个大小为原来两倍的数组,保证新的容量仍为2的N ...

  8. @RequestBody和@ResponseBody的使用情形以及RestTemplate的http报文转换

    @RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换. @RequestBody 1.@requestBody注解常用来处理content-typ ...

  9. C# 字符串中正则表达式的应用

    1.截取字符串中指定内容 {"weatherinfo":{"city":"北京","cityid":"1010 ...

  10. 深入理解JVM3

    VM运行时数据区域 JVM执行Java程序的过程中,会使用到各种数据区域,这些区域有各自的用途.创建和销毁时间.根据<Java虚拟机规范(第二版)>的规定,JVM包括下列几个运行时数据区域 ...