zoukankan      html  css  js  c++  java
  • sphinx使用

    一、
    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 yiidbQuery();  
            //使用框架中的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
  • 相关阅读:
    华为牛人在华为工作十年的感悟!(有点长)(转载)
    C# 10进制与16进制相互转换
    Linux必学的60个命令
    项目管理
    网络数据加密需要解决三个问题:
    DES加密/解密的应用
    一个比较牛的加密算法
    开发完成后总结心得(团队会议稿) (转载)
    相当于序列化与反序列化,但是不用借助外部文件
    软件开发设计常识
  • 原文地址:https://www.cnblogs.com/fwqblogs/p/6596233.html
Copyright © 2011-2022 走看看