Sphinx和coreseek检索引擎
Sphinx是检索英文用,coreseek是检索中文用。
Sphinx(斯芬克斯)是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。
Like ‘%%’ sql 中国 xxx
Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。
Sphinx的主要特性包括:
高速索引 (在新款CPU上,近10 MB/秒); 高速搜索 (2-4G的文本量中平均查询速度不到0.1秒); 高可用性 (单CPU上最大可支持100 GB的文本,100M文档); 提供良好的相关性排名 支持分布式搜索; 提供文档摘要生成; 提供从MySQL内部的插件式存储引擎上搜索 支持布尔,短语, 和近义词查询; 支持每个文档多个全文检索域(默认最大32个); 支持每个文档多属性; 支持断词; 支持单字节编码与UTF-8编码;
coreseek是一款基于sphinx开源的搜索引擎,专门为用户提供免费的中文全文检索系统,coreseek被称为带有中文分词的sphinx,与sphinx不同的是coreseek增加了一个带有中文分司的词库,这里使用了coreseek 3.2.14版本进行解讲,本篇讲解如何安装coreseek,并同时解决如何给php加上sphinx模块。首先在系统安装好lnmp环境即linux+mysql+php+nginx环境,如果不知道如何安装请看我之前见的关于lnmp环境安装文章。
http://219.232.239.243/uploads/csft/4.0/coreseek-4.1-win32.zip
从这里开始——
什么时候使用?
在MYSQL中当对一个文本类型字段进行Like并以%开头的查询时,会进行全表扫描。
模糊查询:
1.全文扫描太慢了
2.MySQL没有分词
Sphinx就可以解决以上两个问题。
总结:当一个功能对表中的text、varchar等文本类型的字段进行LIKE查询时,MySQL是全表扫描非常慢,需要使用sphinx。
我们商城中的 根据关键字搜索的功能需要Sphinx优化:1,可以解决性能的问题;2,可以解决分词的问题。
优化网站:搜索引擎用Sphinx、全站静态化
怎么使用Sphinx?
Sphinx有两种使用方式:
1.原始用法:Sphinx和MYSQL是两个独立的服务器
PHP把要搜索的短语发给sphinx服务器,sphinx返回的是记录的ID
PHP在使用sphinx返回的ID查询数据库
2.把sphinx集成到MYSQL里面去(没有单独的sphinx服务器)
PHP只需要写一个SQL语句即可,不用管sphinx,MYSQL会自己连接查询。
如果使用这种,需要在LINUX下重新编译MYSQL,把sphinx当成插件编译到MYSQL中去。
实际操作:
1.先下载sphinx包,我们下载的是coreseek。Coreseek是加了中文包的sphinx。
2.下载包后,几个重要的说明
etc中的csft_mysql.conf文件是数据库索引配置文件(后面会说如何配置参数):
注意:这个文件配置完成后需要放入bin文件夹下,并改名为sphinx.conf
indexer.exe文件是创建全文索引程序,一般都是通过命令行来创建(请看后面的创建数据源的索引);创建之前必须要把上面的csft_mysql.conf文件配置好。
一般情况下创建完索引后会在命令行先测试一下(请看后面的 bin\search -c bin\xx.conf +搜索词)。最后需要启动一下sphinx服务器( 请看后面的启动sphinx服务器),
这是sphinx的接口类库,需要把这个文件放入项目或框架中才能起到作用
实际应用:
先复制MYSQL的配置文件模板(即etc/csft_mysql.conf)到bin文件夹下并改名为sphinx.conf
SQL语句中 GROUP_CONCAT() 把多个值拼成一个字符串配置
既可以搜商品名称也可以搜商品属性的值,GROUP_CONCAT()把多个属性值拼成一个字符串。
一下两张图片是配置文件的信息:source + 名称 代表数据源,名称可以随便定义
注意:下面是杨写的,可做参考
创建数据源的索引:
在命令行窗口下执行 " bin\indexer -c bin\xxx.conf index即:创建名为index的数据源的索引。如果需要创建 xxx.conf 配置文件中的所有索引,刚使用 --all 替代index
搜索中文时,出现 iconv 不是内部或外部命令。解决办法:运行一下 "set PATH=%CD%\bin;%PATH%",即可解决;
这里面最后的那个sphinx代表bin/sphinx.conf文件
bin\search -c bin\xx.conf +搜索词 测试一下是否成功创建索引
设为开机启动:在控制面板——管理工具中——计划任务中设置
启动sphinx服务器
bin\searchd -c bin\sphinx.conf //开启搜索服务
注意:查看是否启动的方法是在:任务管理器->服务->右下角服务->找searchd,看是否已启动。
在coreseek/api目录下,有个名为 sphinxapi.php 的文件,这就是php api接口。
如何使用coreseek:使用之前必须要把sphinxapi.php这个接口文件放在项目中:
然后写下面的代码,设置coreseek参数
<html>
<head>
<form action="test.php" method="post">
输入关键词:<input type=“test” name="keyword"
size="30" />
<input type="submit" name="sub" value="搜索" /> </form>
<?php
echo "<pre>";
require_once('sphinxapi.php');
if(isset($_POST['sub']) && $_POST['keyword'] != ''){
$keyword = trim($_POST['keyword']);
$sph = new SphinxClient();
$sph->SetServer('localhost',9312);
//连接9312端口
$sph->setMatchMode(SPH_MATCH_ANY);
//设置匹配方式
$sph->SetSortMode(SPH_SORT_RELEVANCE);
//查询结果根据相似度排序
$sph->SetArrayResult(true);
//设置结果返回格式,true以数组,false以phphash格式返回,默认为false $result = $sph->query($keyword,'sphinx');
//执行搜索操作,参数(关键词,索引名),返回结果是商品的id
print_r($result);
} ?> </head>
</html>
Sphinx自动生成索引
在使用sphinx生成索引时,只会为当前数据库中的数据生成索引。生成索引之后,如果在数据库中又添加了新的数据,那么在sphinx 是无法搜索到新的数据,需要把新的数据也生成索引并添加到sphinx 中去才行。
如果每次插入新的数据之后都要手动在重建索引繁琐了,所以我们一般要配置sphinx每隔一段时间自动把数据库中最新插入的数据重新生成新的索引文件,并把这个新的索引文件合并到主索引文件上。
实际操作:
1.每次生成索引文件之后,要把最后一条记录的ID保存下来,下次ID大于这个ID 的就是新数据。
可以通过建一张表来保存这个ID。
配置sphinx让每次生成索引之后能够直接把最大的ID 更新进来。
2、定期为新添加的数据生成索引
修改sphinx定义一个新的数据源(新插入的还没有创建索引的数据)
新添加一个index索引(每个数据源对应一个index)
写一个bat脚本,让这个脚本定期的用新的数据源生成索引文件,并把这个索引文件合并到主索引文件(第一次生成的索引文件)上。
配置windows系统,让系统定期执行这个bat.脚本即可:双击这个文件即执行一遍更新一遍索引。
将文本转化为bat脚本
将sphinx引入 TP 框架
Sphinx和coreseek检索引擎的更多相关文章
- sphinx中文版Coreseek中文检索引擎安装和使用方法(Linux)
sphinx中文版Coreseek中文检索引擎安装和使用方法(Linux) 众所周知,在MYSQL数据库中,如果你在百万级别数据库中使用 like 的话那你一定在那骂娘,coreseek是一个 ...
- Coreseek + Sphinx + Mysql + PHP构建中文检索引擎
首先明确几个概念 Sphinx是开源的搜索引擎,它支持英文的全文检索.所以如果单独搭建Sphinx,你就已经可以使用全文索引了.但是往往我们要求的是中文索引,怎么做呢?国人提供了一个可供企业使用的,基 ...
- Linux下PHP+MySQL+CoreSeek中文检索引擎配置
说明: 操作系统:CentOS 5.X 服务器IP地址:192.168.21.127 Web环境:Nginx+PHP+MySQL 站点根目录:/usr/local/nginx/html 目的:安装co ...
- CoreSeek中文检索引擎
目的:安装coreseek中文检索引擎,配置MySQL数据库访问接口,使用PHP程序实现中文检索. CoreSeek官方网站: http://www.coreseek.cn/ http://www.c ...
- Sphinx与coreseek
Sphinx : 高性能SQL全文检索引擎 分类 编程技术 Sphinx是一款基于SQL的高性能全文检索引擎,Sphinx的性能在众多全文检索引擎中也是数一数二的,利用Sphinx,我们可以完成比数据 ...
- 【Java】Lucene检索引擎详解
基于Java的全文索引/检索引擎——Lucene Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能. L ...
- sphinx和coreseek
sphinx是国外的一款搜索软件. coreseek是在sphinx的基础上,增加了中文分词功能,换句话说,就是支持了中文. Coreseek发布了3.2.14版本和4.1版本,其中的3.2.14版本 ...
- ubuntu-10.04的测试环境 安装测试 Coreseek开源中文检索引擎-Sphinx中文版
主要参考文档:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 一. 32位版本: coreseek安装需要预装的软件: ap ...
- 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)
一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...
随机推荐
- select中无法使用click的处理
今天工作用到了select,想要给option添加click点击事件,可是却没有任何效果,百度了才发现,原来竟然是不支持呀! 众所周知(其实我才知道哎),在IE里, select的option是不支持 ...
- ALV的颜色分为行的颜色、列的颜色和CELL的颜色
ALV的颜色分为行的颜色.列的颜色和CELL的颜色.任务要求,将一定的Tabellenfeld 用黄色填充,也就是说CELL的颜色 DATA:ls_cellcolorTYPElvc_s_scol,co ...
- Dynamics AX7 materials
Dynamics AX community https://community.dynamics.com/ax Dynamics AX Wiki https://ax.help.dynamics.co ...
- Office 365 - SharePoint 2013 Online 中创建母版页
1.登陆SharePoint Online站点,点击右上角的设置按钮,如下图: 2.点击进入网站设置,到下面两个地方开启SharePoint Server 发布基础架构: 网站集管理 – 网站集功能 ...
- JavaScript MVC框架和语言总结[infoq]
infoq关于javascript的语言和框架的总结,非常全面,值得一读. http://www.infoq.com/minibooks/emag-javascript Contents of the ...
- elipse + maven + tomcat + springMVC环境搭建
1. java JDK安装 http://jingyan.baidu.com/article/b24f6c82c989da86bfe5dab2.html 2.eclipse安装 http://jing ...
- Source Insight基本使用和快捷键
Source Insight基本使用和快捷键 为什么要用Source Insight呢?貌似是因为比完整的IDE要更快一些,比较利于查看大量的代码. 软件的安装很简单,设置好安装目录. 配置好文档路径 ...
- Android开发学习——搭建开发环境
在学校开课学习了android的一些简单的UI组件,布局,四大组件学习了2个,数据存储及网络通信,都是一些简单的概念,入门而已.许多东西需要自己去学习. 学习一下 Android开发环境的搭建,两种方 ...
- Mac wifi已打开但尚未连接到网络
把网络偏好设置 里面的询问新网络 关闭了 然后 重启电脑 试一下 应该就可以了
- MapReduce实例-基于内容的推荐(一)
环境: Hadoop1.x,CentOS6.5,三台虚拟机搭建的模拟分布式环境 数据:下载的amazon产品共同采购网络元数据(需FQ下载)http://snap.stanford.edu/data/ ...