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. SpringMVC之DispatcherServlet类

    一.DispatcherServlet是什么 DispatcherServlet是前置控制器,配置在web.xml文件中的.拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据 ...

  2. 条件分页 分页条件和页参数传递方式一 超链接拼串 方式二 使用查询表单searchForm

    <%-- Created by IntelliJ IDEA. User: jie Date: 2019/5/10 Time: 20:00 To change this template use ...

  3. Photoshop CC 2014 for mac破解版

    https://pan.baidu.com/s/1gfmTq8b 安装PS试用版后,打开Applications/Photoshop CC 2014文件夹下,   右键Photoshop CC 201 ...

  4. 在双系统(Win7和Ubuntu Kylin)中卸载Ubuntu

    由于以前学习Linux相关的知识,所以在win7的基础上装了ubuntu系统,最近在使用中老是出现一些问题,想将其卸载,于是在网上找了些相关方法. 我每次开机时,都会出现GRUB界面(我需要选择要进入 ...

  5. IntelliJ IDEA 打包Maven 构建的 Java 项目

    方法 2,一键生成方便到哭 打开maven项目路径     一键生成     3.生成jar 目标文件在 path/target/xx.jar下面 方法 1 选中Java项目工程名称,在菜单中选择 F ...

  6. F-三生三世

    链接:https://ac.nowcoder.com/acm/contest/892/F 题意: 秦皇岛的海风轻轻地唱着歌唤醒了水上的涟漪,冬日的阳光把沙滩洒满了金黄. BD哥在沙滩上留下了一串串脚印 ...

  7. openstack安装newton版本创建虚拟机(五)

    一.创建网络: 1.在控制节点上创建一个单一扁平网络(名字:flat),网络类型为flat,网络适共享的(share),网络提供者:physnet1,它是和eth0关联起来的 [root@linux- ...

  8. CUBE 隐藏维度中的Unknown

     纬度,属性里面有个unknowmember设置为hidden   

  9. Redis string(字符串)

    1.getset key newValue   //给key设置value,并返回旧的value,如果没有旧的value,返回nil. 示例: getset age      //age 的值被设置为 ...

  10. sql常用操作(三)多表查询

    1 连接查询 1.1连接就是指两个或2个以上的表(数据源)“连接起来成为一个数据源”. 实际上,两个表的完全的连接是这样的一个过程: 左边的表的每一行,跟右边的表的每一行,两两互相“横向对接”后所得到 ...