sphinx定义搜索结果,搜索的内容着重显示,可以使用下面代码

 <?php
/**
* Created by PhpStorm.
* User: pc00001
* Date: 2015/4/10
* Time: 14:18
*/
header('Content-type:text/html;charset=utf-8');
include_once('sphinxapi.php'); $sp = new SphinxClient(); $sp ->SetServer('127.0.0.1',9312); //server连接
$sp ->SetConnectTimeout(5); //超时时间
$sp ->SetLimits(0,10); //取出条数 $keywords = isset($_REQUEST['ky'])?$_REQUEST['ky']:'新款'; $res = $sp ->Query($keywords,'*'); $res_id = (implode(',',array_keys($res['matches']))); $conn= mysql_connect('127.0.0.1','root','');
mysql_query('set names utf8');
mysql_query('use ldds');
$sql = "select*from ld_goods where goods_id in ($res_id)";
$tmp = mysql_query($sql,$conn); $query_res = array();
while($row = mysql_fetch_assoc($tmp)){
$query_res[] = $row;
} $goods_name = array();
$res = array();
//定义关键字标注内容
$build_opts = array(
'before_match'=>"<font color='red'>", //在关键字之前添加的html
'after_match'=> '</font>' //在关键字之后添加的html
); foreach($query_res as $k=>$v){
$goods_name[$k] = $v['goods_name'];
} //参数分别是 (需要标注的内容,索引名称,关键字,定义关键字设置数组)
$res = $sp -> BuildExcerpts($goods_name,'mysql',$keywords,$build_opts);
print_r($res);
//var_dump($goods_name);exit;

结果显示类似下面内容

[0] => 正品 2014春装新款 女 绣花针织衫 开衫外套浮桑初 蓝色 [1] => 正品 2014春装新款 女 绣花针织衫 开衫外套浮桑初 绿色

其他常用方法

其他Sphinxapi中常用方法 1

      $sp -> SetMatchMode(          );
SPH_MATCH_ALL, 匹配所有查询词(默认模式)
SPH_MATCH_ANY, 匹配查询词中的任意一个
SPH_MATCH_PHRASE, 将整个查询看作一个词组,要求按顺序完整匹配
SPH_MATCH_BOOLEAN, 将查询看作一个布尔表达式 (实现不包含关键词的搜索)
SPH_MATCH_EXTENDED, 将查询看作一个Sphinx内部查询语言的表达式 $sp->SetFilterRange ( $attribute, $min, $max, $exclude=false );
添加新的整数范围过滤器
$sp->SetFilterRange (‘dateline’,time()-3600,time());//查询某个时间段 $sp->SetFilter ( $attribute, $values, $exclude=false );//查询指定字段为value,如通过uid查
增加整数值过滤器。 $sp->SetSortMode ( $mode, $sortby=“” ) ;
设置匹配项的排序模式,6种模式
SPH_SORT_EXPR 模式,按某个算术表达式排序。
$uptime = time() - 60*60*24*60;
$sp->SetSortMode(SPH_SORT_EXPR, "@weight + IF(dateline > $uptime,1,0)“)

$sp->SetFieldWeights ( $weights );//按字段名称设置字段的权值

if (!$is_bytitle) {

$weight = array(

'title'=> 10,'content'=> 100,

);

} else {

$weight = array(

'title'=> 100,'content'=> 10,

);

}

$sp->SetFieldWeights($weights); // 适用于按标题搜索,或者按内容搜索

$sp->SetFilterFloatRange( $attribute, $min, $max, $exclude=false );

增加新的浮点数范围过滤器。使用方法类似于整型过滤

注意:使用这些方法,需要将数据所在字段的内容加入到索引中。如配置文件中:

    sql_attr_uint  = click

    sql_attr_timestamp      = dateline

    另外这些方法必须在Query()方法执行前执行。

sphinx关键字套红的更多相关文章

  1. 作为一个新手的Oracle(DBA)学习笔记【转】

    一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...

  2. Sphinx高亮显示关键字

    选取程序中使用的一部分代码: public function buildExcerptRows($ids) { $options = array( 'before_match' => '< ...

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

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

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

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

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

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

  6. sphinx应用

     sphinx调用原理 只需要提交要查询,sphinx将返回唯一的id号  API调用 1.创建连接 $sphinx = new SphinxClient(); $sphinx->SetServ ...

  7. sphinx 配置文件全解析

    sphinx的配置文件是在配置的时候最容易出错的了: 我们先要明白几个概念: source:数据源,数据是从什么地方来的. index:索引,当有数据源之后,从数据源处构建索引.索引实际上就是相当于一 ...

  8. sphinx全文检索 安装配置和使用

    公司项目刚刚导入大量产品数据,然后发现网站的产品搜索很卡,原本是原生sql的like来做模糊搜索,数据量20W的时候还可以接受,但是上百万就很卡了,所以需要做优化. 经过考虑,打算采用全文检索 sph ...

  9. sphinx教程

    http://www.php100.com/html/it/focus/2013/0916/6188.html### 以上一篇的email数据表为例: 数据结构: 01.CREATE TABLE em ...

随机推荐

  1. 【SpringBoot】编写一个自己的Starter

    一.什么是Starter? 在开发过程中我们就经常使用到各种starter,比如mybatis-spring-boot-starter,只需要进行简单的配置即可使用,就像一个插件非常方便.这也是Spr ...

  2. C 语言实例 - 判断字母

    C 语言实例 - 判断字母 C 语言实例 C 语言实例 用户输入一个字符,判断该字符是否为一个字母. 实例 #include <stdio.h> int main() { char c; ...

  3. oracle merge 目标表以及源表存在重复列的问题(转)

    SQL> select * from t_source;                                                                      ...

  4. code blocks无法输出中文解决方法

    是CodeBlocks编译器设置问题,在CodeBlocks菜单 settings -> compiler and debugger settings -> global compiler ...

  5. Net Core2.0 基于QuartzNet任务管理系统

    Net Core2.0 基于QuartzNet任务管理系统 Quartz.NET官网地址:https://www.quartz-scheduler.net/ Quartz.NET文档地址:https: ...

  6. 关于eclipse安装maven之后,maven找不到JDK问题

    问题: 最近在Eclipse里面装了maven之后,启动或者在运行项目时存在如下的警告: Eclipse is rinning in a JRE,but a JDK is require, Some ...

  7. 给Eclipse设置android的SDK位置时,出现这个:This Android SDK requires Andr...ate ADT to the latest

    这样的问题很好解决,一个升级ADT到指定版本或以上,另一个简单的办法是调低SDK版本 找到android-sdk-windows\tools\lib下的plugin.prop文件修改其中的版本号,改为 ...

  8. BroadCast广播机制应用与实例

    如何编写广播接收器 第一步:需要继承BroadcastReceiver类,覆写其中的onReceive()方法. class MyBroadcastReceiver extends Broadcast ...

  9. HDU 2256Problem of Precision(矩阵快速幂)

    题意 求$(\sqrt{2} + \sqrt{3})^{2n} \pmod {1024}$ $n \leqslant 10^9$ Sol 看到题解的第一感受:这玩意儿也能矩阵快速幂??? 是的,它能q ...

  10. mysql 5.7.20 在线安装与卸载(yum卸载与rpm卸载方式)

    mysql5.7.20和之前的5.7.16版本不同,解压后没有data文件,需要自己建立 1.把下载的mysql5.7.20放到目录:/usr/local/2.卸载cenos上预装的mysql查看已安 ...