Sphinx全文索引

类似的软件: Lucence

使用流程:

1 下载  coreseek  coreseek-3.2.14-win32

2 使用sphinx为要搜索的数据【数据源-商品】 创建全文索引

2.1 制作一个配置文件  找到在 coreseek-3.2.14-win32\coreseek-3.2.14-win32\etc\csft_mysql.conf

复制一个模板 改名 为sphinx.conf

2.2修改配置文件

#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/
#请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库
#为数据库中的表p40_goods表 为数据源
#源定义
source goods
{
type = mysql

sql_host = localhost
sql_user = root
sql_pass =
sql_db = php40
sql_port = 3306
sql_query_pre = SET NAMES utf8
#主查询:要为哪些数据建索引就使用一条SQL语句把这些数据取出来即可
#要求:第一个字段一定是ID
#现在这个SQL的意思是让SPHINX为所有商品的:goods_name,goods_decs,attr_value这三个字段创建全文索引

sql_query = SELECT a.id,a.goods_name,a.goods_desc,GROUP_CONCAT(b.attr_value) attr_value from p40_goods a LEFT JOIN p39_goods_attr b ON a.id=b.goods_id GROUP BY a.id
}

#一个数据源对应一个index
#定义索引文件
index goods
{
source = goods #对应的source名称
#生成的索引文件存放的目录\索引文件的名字, 最后的goods是指文件名叫goods 而不是目录
path = D:\server\apache\htdocs\tp\tp40\coreseek-3.2.14-win32\var\data\goods
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0

#中文分词词库文件所在目录
charset_dictpath = D:\server\apache\htdocs\tp\tp40\coreseek-3.2.14-win32\etc
charset_type = zh_cn.utf-8
}

#全局index定义
indexer
{
mem_limit = 128M
}

#searchd服务器的配置
searchd
{
listen = 9312
read_timeout = 5
max_children = 30
max_matches = 1000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
#配置一下 以下三个文件存放的绝对目录【目录中不要有中文】
pid_file = D:\server\apache\htdocs\tp\tp40\coreseek-3.2.14-win32\var/log/searchd_mysql.pid
log = D:\server\apache\htdocs\tp\tp40\coreseek-3.2.14-win32\var/log/searchd_mysql.log
query_log = D:\server\apache\htdocs\tp\tp40\coreseek-3.2.14-win32\var/log/query_mysql.log
}

2.3使用sphinx为商品生成索引

使用bin/indexer.exe的命令

以管理员命令 运行CMD

D:\server\apache\htdocs\tp\tp40\coreseek-3.2.14-win32\bin\indexer.exe -c  D:\server\apache\htdocs\tp\tp40\coreseek-3.2.14-win32\etc\sphinx.conf  配置的路径  goods 配置文件中所有名字

-----------------------------

安装启动sphinx服务器

使用bin/searchd.exe

D:\server\apache\htdocs\tp\tp40\coreseek-3.2.14-win32\bin\searchd.exe -c  D:\server\apache\htdocs\tp\tp40\coreseek-3.2.14-win32\etc\sphinx.conf   --install

安装服务窗口找到SPHINX并启动

services.msc   启动

在项目中使用PHP代码查询sphinx

A 先复制sphinxapi文件到项目中根目录

例子:

//关键字搜索
public function key_search()
{

//搜索关键字
$key=I(‘get.key‘);

header(‘Content-Type:Text/html;charset=utf-8;‘);
//搜索sphinx
require(‘./sphinxapi.php‘);
$sph=new \SphinxClient();
$sph->SetServer(‘localhost‘,9312);
//第一个参数:要查的关键字
//第二个参数:sphinx中索引的名字默认是*,所有的索引
$ret=$sph->query($key,‘goods‘);
//提取出商品的ID
$ids=array_keys($ret[‘matches‘]);
$gModel=D(‘Goods‘);
$ret=$gModel->field(‘id,goods_name‘)->where(
‘id‘=>array(‘in‘,$ids),
)->select();

}

用法

1 创建配置文件建索引并启动服务器

2 把关键词发到sphinx服务器去搜索 会把搜索到的商品ID返回给php

3 php 再使用ID查询数据库取出详细信息

时间: 2024-10-13 14:14:58

Sphinx全文索引的相关文章

Sphinx全文索引详细介绍及其安装例子

Sphinx全文索引(要lanmp环境哦) 比如:你要搜索乐杨俊,能后通过php程序去sphinx创建的索引表里面搜索相应的记录,sphinx找到后在去MySQL数据库里面select * from nameTable where name='乐杨俊':搜索速度大大提升---sphinx是夹在PHP和MySQL中间的 详细的走整理出了个文档,在我的资源里面去下载即可,过程很详细,及其PHP操作sphinx的案例

Sphinx全文索引 第一节

1 使用场景:用来解决站内搜索的一些应用场景. 网站中的搜索(站内搜索) 系统后台中的搜索 第一种方式:PHP——>MySQL 第二种方式:MySQL<——>Sphinx:PHP——>Sphinx. MySQL全文索引引擎也可以解决站内搜索,当数据库某张表数据量大的时候,做搜索花费时间多. MySQL:添加索引 alert table 表名 add index 随便起索引名字(字段) Sphinx将mysql数据生成一个索引数据表供前台检索可以提高检索效率. 2 Sphinx Sp

[Sphinx]全文索引Sphinx的使用配置

------------------------------------------------------------------------------------ 搜索分为两种: 1. 对结构化数据搜索:SQL语句对数据库中存储的内容进行查询. 2. 对非结构化数据搜索:文本,图片,全文搜索. 全文检索分为两类: 1. 顺序扫描:如SQL中的LIKE查询或regexp正则查询. 2. 索引扫描:将非结构化数据提取部分(如:词组)后进行重组,使其机构化,这些提取出的数据即索引. 使用索引的全

phpcms v9 配置sphinx全文索引教程

英文介绍:http://www.sphinxsearch.com/docs/manual-0.9.9.html 一.首先需要在服务器上安装sphinx 在Windows上安装sphinx     1.下载支持mysql的包  http://www.sphinxsearch.com/downloads/sphinx-0.9.9-win32.zip     2.解压缩 sphinx-0.9.9-win32.zip 到 D:\sphinx     3.安装sphinx服务,在命令行执行命令 D:\sp

sphinx续4-coreseek的工作原理

原文地址:http://blog.itpub.net/29806344/viewspace-1399621/ 在分析sphix原理之前,我先澄清一下为什么经常出现coreseek这个词? 因为sphinx默认不支持中文索引及检索,而coreseek基于sphinx开发了coreseek全文检索服务器,它提供了为sphinx设计的中文分词包libmmseg包含mmseg中文分词,是目前用的最多的sphinx中文检索.     在没有sphinx之前,mysql数据库要对海量的文章中的词进行全文索引

如何选择mysql存储引擎

一.MySQL的存储引擎 完整的引擎说明还是看官方文档:http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html 这里介绍一些主要的引擎 1.InnoDB存储引擎 InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务.除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎. 建议使用MySQL5.5及以后的版本,因为这个版本及以后的版本的InnoDB引擎性能更好. M

大流量高并发量网站的之解决方案

一.对于网站访问速度影响的条件如下: 瓶颈主要有: 1.磁盘搜索 优化方法是:将数据分布在多个磁盘上 2.磁盘读/写 优化方法是:从多个磁盘并行读写. 3.CPU周期 优化方法:扩充内存 4.内存带宽 二.大流量高并发量网站的解决方案 1.确认服务器硬件是否足够支持当前的流量. 2.使用memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必在访问数据库. 3.禁止外部的盗链. 4.外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对自身图片或者文

Linux内核分析+子安全系统selinux+Linux的用户组和用户

一.Linux内核分析/etc/grub.conf文件 1.passwd命令 Linux以安全性和稳定性在世界上自居,在Linux发明之初就在安全领域做了很多手段,其中最简单就是提供了密码的登录和密码修改的功能,在Linux系统当中无论什么用户都必须具有密码才能登录Linux操作系统. 命令格式: passwd [用户名] 命令作用:更新或者设置用户登录的密码 2.黑客攻防:Linux单用户模式破解root密码 原因在大部分的人安装Linux的时候,很多人没有设置装载引导的密码,所以就导致黑客可

mysql索引结构

mysql中索引的数据结构: 1.基本上所有的索引都是B-Tree结构,一部分还有HASH索引. 2.索引分类(功能) 主键索引:一张表中最多有一个主键索引,而且该字段值不能为NULL,不能重复. 唯一索引:一张表中可以有多个唯一索引,而且字段可以为NULL,但是不能有重复值. 普通索引:一张表中可以有多个普通索引,而且值可以为NULL,并且值可以重复. 全文索引:全文索引就是将该字段的信息加以拆分和组合,形成一份清单,和sphinx全文索引一样. 复合索引:一个索引如果建立在多个字段上,那该索