coreseek实战(三):全文搜索在php中应用(使用api接口)
coreseek实战(三):全文搜索在php中应用(使用api接口)
这一篇文章开始学习在php页面中通过api接口,使用coreseek全文搜索。
第一步:综合一下前两篇文章,coreseek实战(1)中的数据源换成实战(2)中的 mysql 数据源配置。然后创建索引文件:

D:\www\coreseek>bin\indexer -c etc\csft_mysql.conf dede
Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
Copyright (c) 2007-2011,
Beijing Choice Software Technologies Inc (http://www.coreseek.com) using config file 'etc\csft_mysql.conf'...
indexing index 'dede'...
collected 354 docs, 2.2 MB
sorted 0.5 Mhits, 100.0% done
total 354 docs, 2207983 bytes
total 2.117 sec, 1042951 bytes/sec, 167.21 docs/sec
total 2 reads, 0.002 sec, 748.5 kb/call avg, 1.2 msec/call avg
total 9 writes, 0.008 sec, 396.2 kb/call avg, 0.9 msec/call avg

第二步:安装并开启 searchd 服务
在coreseek实战(一)中,有一部分错误的,但已经原文修正,具体见实战(一)第一步的第5点。
第二步:coreseek php api接口的使用
在coreseek/api目录下,有个名为 sphinxapi.php 的文件,这就是php api接口。我们复制一份到网站根目录下(我这里是http://localhost/php/),同时在该目录下创建index.php文档,呆会我们通过该页面来实现查询功能。
index.php 页面代码:

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>coreseek中文全文搜索在php程序中的应用</title>
</head>
<body>
<h3><font color="blue">coreseek全文搜索在php程序中应用</font></h3>
<form action="index.php" method="post">
输入搜索的关键词:<input type="text" name="keyword" size="30" />
<input type="submit" name="sub" value="搜索" />
</form>
<hr />
<?php
echo "<pre />";
#引入接口文件,其实你懂的,就是一个类
require_once('sphinxapi.php');
if(isset($_POST['sub']) && $_POST['keyword'] != ''){
$keyword = trim($_POST['keyword']); //接收关键词 $sph = new SphinxClient(); //实例化 sphinx 对象
$sph->SetServer('localhost',9312); //连接9312端口
$sph->SetMatchMode(SPH_MATCH_ANY); //设置匹配方式
$sph->SetSortMode(SPH_SORT_RELEVANCE); //查询结果根据相似度排序
$sph->SetArrayResult(true); //设置结果返回格式,true以数组,false以PHP hash格式返回,默认为false $result = $sph->query($keyword, 'dede');//执行搜索操作,参数(关键词,索引名)
print_r($result);
}
?>

结果返回一个数组,注意观察一下,数组中有一个键名为[matches]单元,这就是匹配的结果,我们需要获取[matches]下的键名,即是文档的id。然后再根据 id 来查找数据库,获取到匹配结果里对应的文章即可,详细代码见下一篇文章。
coreseek实战(三):全文搜索在php中应用(使用api接口)的更多相关文章
- 记一次Hvv中遇到的API接口泄露而引起的一系列漏洞
引言 最近朋友跟我一起把之前废弃的公众号做起来了,更名为鹿鸣安全团队,后面陆续会更新个人笔记,有趣的渗透经历,内网渗透相关话题等,欢迎大家关注 前言 Hvv中的一个很有趣的漏洞挖掘过程,从一个简单的A ...
- 在Winform混合式框架中整合外部API接口的调用
在我们常规的业务处理中,一般内部处理的接口多数都是以数据库相关的,基于混合式开发的Winform开发框架,虽然在客户端调用的时候,一般选择也是基于Web API的调用,不过后端我们可能不仅仅是针对我们 ...
- MVC代码中如何调用api接口
关于代码解释,为了方便读者浏览时更好理解代码的含义,我把注释都写在代码里面了.因为一开始我只考虑到功能上的实现并没有考虑代码的优化所以代码我就全写在一个页面了.至于那些生成扑克牌类.计算类等代码优化方 ...
- windows服务中对外提供API接口
public class SendMqService { private static bool isExcute = true; private static HttpListener listen ...
- 全文搜索 Contains 与like 的区别
全文搜索:是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式. ...
- 如何在MySQL中获得更好的全文搜索结果
如何在MySQL中获得更好的全文搜索结果 很多互联网应用程序都提供了全文搜索功能,用户可以使用一个词或者词语片断作为查询项目来定位匹配的记录.在后台,这些程序使用在一个SELECT 查询中的LIKE语 ...
- 在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)
项目中需要搜索, 所以从零开始学习大家都在用的搜索神器 elasiticsearch. 刚开始 google 的时候, 搜到好多经验贴和视频(中文的, 英文的), 但是由于是第一次接触, 一点概念都没 ...
- SQLite中使用全文搜索FTS
SQLite中使用全文搜索FTS SQLite支持全文搜索.通过全文搜索功能,可以方便用户快速进行查找.在iOS中,GRDB.FMDB等SQLite框架均支持FTS技术,如FTS3.FTS4等.各 ...
- window环境下,php+sphinx+coreseek实现简单的中文全文搜索
就以我个人理解来说,sphinx其实是介于客户端和mysql之间的一个索引表,把数据库的没一条记录假设为文档,那么这个索引表其实保存的就是这条记录的关键词及其对应的文档id 1.sphinx的安装 下 ...
随机推荐
- JAVA_Java常用核心包(概念)
20150802 Created By BaoXinjian
- Java为什么会引入及如何使用Unsafe
综述 sun.misc.Unsafe至少从2004年Java1.4开始就存在于Java中了.在Java9中,为了提高JVM的可维护性,Unsafe和许多其他的东西一起都被作为内部使用类隐藏起来了.但是 ...
- Aquarium Cycling
http://www.fishyou.com/aquarium-cycling.php Aquarium Cycling Aquarium cycling actually refers to the ...
- pytion学习1
个人感觉学习一门新语言,简单的语法懂一点足矣.接下来就是编程.读懂别人程序的每一句,理解每一句的意义. #Filename:MyAddressBook.py import cPickle as p i ...
- C++去掉字符串中首尾空格和所有空格
c++去掉首尾空格是参考一篇文章的,但是忘记文章出处了,就略过吧. 去掉首尾空格的代码如下: void trim(string &s) { if( !s.empty() ) { s.erase ...
- python基础07 函数
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后 ...
- 通知 Notification
1. NotificationManager ma=(NotificationManager) context.getSystemService(context.NOTIFICATION_SERVIC ...
- WebStorage 和 Cookie的区别
sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必 ...
- ftp服务器远程拷贝命令
xiamense@xiamense-testserver:~$ ftp 218.5.82.40 输入账户密码 get 远程文件路径 本机服务器路径get pa20160927.xml /home/xi ...
- Django模板格式
变量 {{ 变量名称 }} 块 {% block 块名称 %} 判断 根据布尔值判断: {% if 布尔值 %} 操作 {% endif %} 根据两者是否相等判断: {% ifequals 变量1 ...