sphinx社工库搭建教程 PHP+Mysql+Sphinx高效的站内搜索引擎搭建详释

为什么要使用Sphinx

假设你现在运营着一个论坛,论坛数据已经超过100W,很多用户都反映论坛搜索的速度非常慢,那么这时你就可以考虑使用Sphinx了(当然其他的全文检索程序或方法也行)。

Sphinx是什么

Sphinx由俄罗斯人Andrew Aksyonoff 开发的高性能全文搜索软件包,在GPL与商业协议双许可协议下发行。

全文检索是指以文档的全部文本信息作为检索对象的一种信息检索技术。检索的对象有可能是文章的标题,也有可能是文章的作者,也有可能是文章摘要或内容。

Sphinx的特性

高速索引 (在新款CPU上,近10 MB/秒);高速搜索 (2-4G的文本量中平均查询速度不到0.1秒);高可用性 (单CPU上最大可支持100 GB的文本,100M文档); 提供良好的相关性排名;支持分布式搜索;? 提供文档摘要生成;? 提供从MySQL内部的插件式存储引擎上搜索 ;? 支持布尔,短语, 和近义词查询; ? 支持每个文档多个全文检索域(默认最大32个); 支持每个文档多属性; ? 支持断词; 支持单字节编码与UTF-8编码;

下载并安装Sphinx

打开网址http://www.coreseek.cn/news/7/52/ 找到适合自己的操作系统的版本,比如我是Windows那么我就可以下载Coreseek Win32通用版本,Linux下可以下载源码包,自己编译安装。这里解释下为什么我们下载的程序叫Coreseek,Coreseek是基于Sphinx开发的一款软件,对Sphinx做了一些改动,在中文方面支持得比Sphinx好,所以我们使用之。

下载完成后,将程序解压到你想解压的地方,比如我就想解压到E盘根目录,之后修改目录名为Coreseek,大功告成Coreseek安装完成了,安装的目录是在E:coreseek。

使用Sphinx

我要使用Sphinx需要做以下几件事

1)、首先得有数据

2)、建立Sphinx配置文件

3)、生成索引

4)、启动Sphinx

5)、使用之(调用api或search.exe程序进行查询)

第1步:(导入数据)

我们建立测试所需要用到得数据库、表以及数据,篇幅有限,这些在附件中都有,下载后导入MySQL即可。

第2步:(建立配置文件)

接下来我们需要建立一个Sphinx的配置文件 E:coreseeketcmysql.conf,将其内容改为下面这些:

source mysql

{type???????= mysql //数据库类型sql_host?? = localhost //数据库地址sql_user???= root ?//数据库用户名sql_pass ? = ? ? ? //数据库密码sql_db?????= test ?//数据库名sql_port ? = 3306 ?//端口号sql_query_pre ? = SET NAMES utf8 ?//设置字符集sql_query ? ? ? = SELECT id,addtime,title,content FROM postsql_attr_timestamp ?= addtime}index mysql{source ? ? ?= mysqlpath ? ? ? ?= E:/coreseek/var/data/mysqlcharset_dictpath ?= E:/coreseek/etc/charset_type ? ? ?= zh_cn.utf-8}

PHP+Mysql+Sphinx高效的站内搜索引擎搭建详释_sphinx

searchd{listen ? ? ? ? = 9312max_matches ? ?= 1000pid_file ? ? ? = E:/coreseek/var/log/searchd_mysql.pidlog ? ? ? ? ? ?= E:/coreseek/var/log/searchd_mysql.logquery_log ? ? ?= E:/coreseek/var/log/query_mysql.log}

先讲下这个配置文件中每项的含义。

source mysql{} 定义源名称为mysql,也可以叫其他的,比如:source xxx{}type? 数据源类型 。

sql_* 数据相关的配置,比如sql_host,sql_pass什么的,这些不解释。

sql_query 建立索引时的查询命令,在这里尽可能不使用where或group by,将where与groupby的内容交给sphinx,由sphinx进行条件过滤与groupby效率会更高,注意:select 的字段必须包括一个唯一主键以及要全文检索的字段,where中要用到的字段也要select出来

sql_query_pre 在执行sql_query前执行的sql命令, 可以有多条。

sql_attr 以这个开头的配置项,表示属性字段,在where,orderby,groupby中出现的字段要分别定义一个属性,定义不同类型的字段要用不同的属性名,比如上面的sql_attr_timestamp就是时间戳类型。

index mysql{} 定义索引名称为mysql,也可以叫其他的,比如:index xxx{}

source 关联源,就是source xxx定义的。

path 索引文件存放路径,比如:E:/coreseek/var/data/mysql 实际存放在E:/coreseek/var/data/目录,然后创建多个名称为mysql后缀却不同的索引文件

charset_dictpath? 指明分词法读取词典文件的位置,当启用分词法时,为必填项。在使用LibMMSeg作为分词 库时,需要确保词典文件uni.lib在指定的目录下

charset_type 字符集,比如charset_type = zh_cn.gbk

searchd{} sphinx守护进程配置

listen 监听端口

max_matches最大匹配数,也就是查找的数据再多也只返回这里设置的1000条

pid_file pid文件路径

log全文检索日志

query_log查询日志

好了,配置文件就这样,配置的参数还有很多,大家可以自己查文档。

sphinx社工库搭建教程 PHP+Mysql+Sphinx高效的站内搜索引擎搭建详释

第3步:(生成索引)

开始 -> 运行 -> 输入cmd回车,打开命令行工具

e:coreseekbinindexer

  

爱华网本文地址 » http://www.aihuau.com/a/8105010103/313777.html

更多阅读

简单的硬币魔术教程——移位的硬币 简单硬币魔术教学

简单的硬币魔术教程——移位的硬币——简介简单的硬币魔术教程——移位的硬币简单的硬币魔术教程——移位的硬币——工具/原料一元硬币四枚简单的硬币魔术教程——移位的硬币——方法/步骤简单的硬币魔术教程——移位的硬币 1、双

排版 怎样使用IDInDesign 来高效的排版 精 indesign排版教程

【排版】怎样使用ID(InDesign)来高效的排版 精——简介一般我们出图会使用PS来排版,但是PS是一款照片处理软件,用PS来排版会很繁琐麻烦,今天教大家一个简便高校的方法。就是我们会使用到一款软件,它跟CAD,PS都是Adobe公司的,所以格式都是兼

《一站到底》题库及视频32 一站到底选手有题库吗

《一站到底》题库及视频第【32】期《一站到底》是江苏卫视推出的一档全新益智答题类节目。《一站到底》采用场上参与者分别单独厮杀的模式,让不同职业、社会标签的参与者在限定的时间内进行PK。这是一档形式新颖,趣味十足,在挑战中挖掘

顺心社工服务中心简介 社工服务中心

顺心社工服务中心是一间顺德本土的社工机构,由顺德大良社会工作局批准注册的非营利机构。本中心的核心成员主要由一群热心公益、精通心理学的社工及心理咨询师组成的优秀团队。本社工机构立足于顺德,为顺德创建和谐家庭、幸福社区出

2014年青翼社工展翅专业训练营汇总2 社工理论汇总

[第十八期]青翼第五天孙剑豪7.20上海多云2014年7月20日今天是青翼培训第四天,项目设计的学习,老树主讲。温故而知新,因此在老树带我们温习社区诊断之后,我们有了更深的认识,也为今天比较繁重的学习打下了基础。老树的讲授,不仅仅是知识

声明:《sphinx社工库搭建教程 PHP+Mysql+Sphinx高效的站内搜索引擎搭建详释》为网友心云间凝听分享!如侵犯到您的合法权益请联系我们删除