sphinx.conf中的配置:

 source indexLocation
{
type = mysql sql_host = 192.168.1.113
sql_user = root
sql_pass = redidai@@2013
sql_db = redidai
sql_port = 3306 # optional, default is 3306 sql_query_pre = SET NAMES utf8
sql_query_pre = SET SESSION query_cache_type=OFF sql_query = \
SELECT a.location_id as id,a.location_id,a.location_name as `location_name`,a.location_name as `name`,a.location_bname,a.attach_id,a.showstatus,a.is_del,a.status,b.area_name as city_name FROM `ts_rdd_location` a LEFT JOIN `ts_rdd_area` b ON a.city_id = b.area_id
#sql_attr_string = name
sql_attr_uint = status
#sql_attr_timestamp = date_added
sql_query_info = SELECT * FROM `ts_rdd_location` WHERE location_id = $id
} index indexLocation
{
source = indexLocation
path = /var/lib/sphinx/test1
docinfo = extern
mlock = 0 #缓存数据内存锁定
morphology = none #形态学(对中文无效)
min_word_len = 2 #索引的词最小长度
charset_type = utf-8
min_prefix_len = 0 #最小前缀
html_strip = 1
ngram_len = 1 #对于非字母型数据的长度切割
ngram_chars = U+3000..U+2FA1F #则会对每个中文,英文字词进行分割,速度会慢 #字符表,注意:如使用这种方式,则sphinx会对中文进行单字切分,即进行字索引。
#若要使用中文分词,必须使用其他分词插件如 coreseek,sfc
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
} indexer
{
mem_limit = 32M
} searchd
{
listen = 9312
#listen = 9306:mysql41
log = /var/log/sphinx/searchd.log
query_log = /var/log/sphinx/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinx/searchd.pid
max_matches = 1000
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
compat_sphinxql_magics = 0
#workers = threads # for RT to work
binlog_path = /var/lib/sphinx
}

php代码:

 <?php
class SearchAction extends AdministratorAction { public $sphinxClient = null; public function __construct() {
parent::__construct(); require_once SITE_PATH . '/sphinxapi.php'; if ($this->sphinxClient == null) {
$this->sphinxClient = new SphinxClient ();
} $this->sphinxClient->SetServer('192.168.0.0', 9312);
$this->sphinxClient->open();
} public function QLocation($params = array()) {
$searchWord = ''; if (isset($params['keyword'])) {
$searchWord = $params['keyword'];
} $result = $this->suggestHandle($this->sphinxClient, $searchWord); $nodeResult = array(); if ($result['total'] > 0) {
$matches = array(); foreach($result['matches'] as $mvale) {
$matches[] = $mvale['id'];
} $matches_id = implode(",", $matches); $locationModel = D('RddLocation', 'admin');
$list = $locationModel->getLocationListByID($matches_id);
$nodeResult = $list;
} print_r($nodeResult);exit; return $nodeResult;
} public function suggestHandle($spx, $searchWord = ''){
//$spx->SetSortMode(SPH_SORT_EXTENDED, "@weight DESC, larea DESC, is_recommend DESC, like_count DESC");
$spx->SetSortMode(SPH_SORT_EXTENDED, "@weight DESC");
$spx->ResetFilters();
//$cityId = filter_input(INPUT_GET, 'area', FILTER_SANITIZE_STRING);
//$spx->SetFilter('showstatus', array('Y'));
//$spx->SetFilter('is_del', array('0'));
$spx->SetFilter('status', array(1));
//$result = $spx->Query($searchWord, 'plan14_location,delta_plan14_location');
$spx->SetArrayResult(true);
$result = $spx->Query($searchWord, 'indexLocation');
//var_dump($spx);
return $result;
} }

调用:

$searchAction = new SearchAction();
$list = $searchAction->QLocation(array('keyword' => $name));

sphinx的简单实例的更多相关文章

  1. Hibernate(二)__简单实例入门

    首先我们进一步理解什么是对象关系映射模型? 它将对数据库中数据的处理转化为对对象的处理.如下图所示: 入门简单实例: hiberante 可以用在 j2se 项目,也可以用在 j2ee (web项目中 ...

  2. 最新 Eclipse IDE下的Spring框架配置及简单实例

    前段时间开始着手学习Spring框架,又是买书又是看视频找教程的,可是鲜有介绍如何配置Spring+Eclipse的方法,现在将我的成功经验分享给大家. 本文的一些源代码来源于码农教程:http:// ...

  3. 修改js confirm alert 提示框文字的简单实例

    修改js confirm alert 提示框文字的简单实例: <!DOCTYPE html> <html> <head lang="en"> & ...

  4. 利用navicat创建存储过程、触发器和使用游标的简单实例

    利用navicat创建存储过程.触发器和使用游标的简单实例 标签: navicat存储过程触发器mysql游标 2013-08-03 21:34 15516人阅读 评论(1) 收藏 举报  分类: 数 ...

  5. 【转】Android Https服务器端和客户端简单实例

    转载地址:http://blog.csdn.net/gf771115/article/details/7827233 AndroidHttps服务器端和客户端简单实例 工具介绍 Eclipse3.7 ...

  6. Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    目录 [TOC] 1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...

  7. vue路由的简单实例

    vue2.0 和 vue1.0 路由的语法还是有点稍微的差别,下面介绍一下vue-router 2的简单实例: <!DOCTYPE html> <html lang="en ...

  8. Flume概述和简单实例

    Flume概述 Flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统.支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方( ...

  9. jsoup解析HTML及简单实例

    jsoup 中文参考文献    http://www.open-open.com/jsoup/ 本文将利用jsoup,简单实现网络抓取的功能,并给出一个小实例,该实例效果为:获取作者本人在博客园写的所 ...

随机推荐

  1. POJ (线段相交 最短路) The Doors

    题意: 一个正方形中有n道竖直的墙,每道墙上开两个门.求从左边中点走到右边中点的最短距离. 分析: 以起点终点和每个门的两个端点建图,如果两个点可以直接相连(即不会被墙挡住),则权值为两点间的欧几里得 ...

  2. ZJOI2010网络扩容

    无限orz hzwer神牛…… 第一问很简单,按数据建图,然后一遍最大流算法即可.     第二问则需要用最小费用最大流算法,主要是建图,那么可以从第一问的残留网络上继续建图,对残留网络上的每一条边建 ...

  3. c#字符串及数组操作

    字符串操作(取当前时间)string time=convert.tostring(DateTime.Today).split( new char []{' '});    textbox1.text= ...

  4. Xcode7下载地址

    XCode 7 7.3.1:https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_7.3. ...

  5. Hibernate4.x之映射关系--单向一对多

    在领域模型中,类与类之间最普遍的关系就是关联关系在UML中,关联是有方向的 以Customer和Order为例:一个用户能发出多个订单,而一个订单只能属于一个客户.从Order到Customer的关联 ...

  6. 3.2版uploadify详细例子(含FF和IE SESSION问题)

    最近做项目中碰到上传需要显示进度的问题,通过uploadfiy很好的解决了这个问题不过(IE9出现了按钮不能点击的问题,至今仍找不到良策) 在使用uploadfiy3.2版本时需要下载jquery.t ...

  7. 用slf4j+logback实现多功能日志解决方案 --- 转

    大家都知道,slf4j是原来log4j的作者写的一个新的日志组件,意思是简单日志门面接口,可以跟其他日志组件配合使用,常用的配合是slf4j+logback,无论从功能上还是从性能上都较之log4j有 ...

  8. jdbc三种常见用法

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...

  9. 《Oracle Database 12c DBA指南》第二章 - 安装Oracle和创建数据库(2.1 安装Oracle数据库软件和创建数据库概览)

    当前关于12c的中文资料比较少,本人将关于DBA的一部分官方文档翻译为中文,很多地方为了帮助中国网友看懂文章,没有按照原文句式翻译,翻译不足之处难免,望多多指正. 2.1 安装Oracle数据库软件和 ...

  10. python学习之copy模块

    Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象.2. copy.deepc ...