生成数据
第一条是 运行searchd服务时,新增索引的的命令 下面是运行searhd服务
图片2

<?php  
header("Content-type: text/html; charset=utf-8");  
require("./sphinxapi.php");  
$s = new SphinxClient;  
$s->setServer("127.0.0.1", 9312);  
      
//SPH_MATCH_ALL, 匹配所有查询词(默认模式); SPH_MATCH_ANY, 匹配查询词中的任意一个; SPH_MATCH_EXTENDED2, 支持特殊运算符查询  
/*
匹配模式SetMatchMode(设置匹配模式)。
原型:firnction  SetMatchMode($mode)
SPH_NLATCH_ALL匹配所有查询词(默认模式)
SPH_MATCH_ANY匹配查询词中的任意一个。
SPH_MATCH_PHRASE将整个查询看作一个词组,要求按顺序完整匹配
SPH_MATCH_BOOLEAN将查询看作一个布尔表达式
SPHMATCHEXTENDED将查询看作一个sphinx内部查询语言的表达式,
SPH_MATCH_FULLSCAN使用完全扫描,忽略查询词汇
SPH_MATCH_EXTENDED2似SPH_MATCH_EXTENDED,并支持评分和权重
*/
   $s->setMatchMode(SPH_MATCH_ALL);  
   $s->setMaxQueryTime(30);                                     
   //设置最大搜索时间  
   $s->SetArrayResult(false);                                       
   //是否将Matches的key用ID代替  
   $s->SetSelect ( "*" );                                           
   //设置返回信息的内容,等同于SQL  
   $s->SetRankingMode(SPH_RANK_BM25);                              
   //设置评分模式,SPH_RANK_BM25可能使包含多个词的查询的结果质量下降。   
   //$s->SetSortMode(SPH_SORT_EXTENDED);                            
   //发现增加此参数会使结果不准确  
   //$s->SetSortMode(SPH_SORT_EXTENDED,"from_id asc,id desc");      
   //设置匹配项的排序模式, SPH_SORT_EXTENDED按一种类似SQL的方式将列组合起来,升序或降序排列。  
   $weights = array ('company_name' => 20);  
   $s->SetFieldWeights($weights);                                   
   //设置字段权重  
   $s->SetLimits ( 0, 30, 1000, 0 );                               
   //设置结果集偏移量  SetLimits (便宜量,匹配项数目,查询的结果集数默认1000,阀值达到后停止)  
   //$s->SetFilter ( $attribute, $values, $exclude=false );     
   //设置属性过滤  
   //$s->SetGroupBy ( $attribute, $func, $groupsort="@group desc" );    
   //设置分组的属性  
   $res = $s->query('1','*'); #1 关键字,*是所有数据源source  
//query  第一个参数 是  关键词   第二哥是索引  为*为全部索引
   
     
  $link=mysqli_connect("127.0.0.1","root","123456");
  mysqli_select_db($link,'test');
  
  $ids=join (',',array_keys($res['matches']));

  $sql="select * from documents where id in({$ids})";
  $rst=mysqli_query($link,$sql);
  
  $opts=[
    "before_match"=>"<span style='color:red;font-weight:bold;'>",
    "after_match"=>"</span>",
    
  ];
  $keyword="1";
  while($row=mysqli_fetch_assoc($rst)){
      //代码高亮  
      //执行高亮,这里索引名字千万不能用*  
      //keyword必须是子串类型
     $ros= $s->BuildExcerpts ($row, 'mysql', $keyword, $opts);
     echo "<pre>";
     print_r($ros);
     echo "</pre>";
  }
  
   
   
   // $err = $s->GetLastError();  
     
   // echo '<pre>';  
   // var_export($res);  
   // var_export($err);  
   // echo '</pre>';

图片3
推荐文章:http://blog.csdn.net/e421083458/article/details/21529969

Last modification:January 5, 2020
如果觉得我的文章对你有用,请随意赞赏