sphinx 使用

sphinx使用步骤:

1、安装

windows

直接解压就可以了

linux

源码安装

2、配置

SQL 结构化查询语言   MYSQL数据库  oracle数据库 sqlserver数据库 但是这三个数据库都要遵循SQL规则

理解配置文件的结构

source ecshop{

}

index mygoods{

}

source ecshop1{

}

index mygoods1{

source            = ecshop1 指定索引用户哪个数据源

}

indexer{

mem_limit            = 128M

}

searchd{

}

注意:

1、数据库配置和索引配置必须成对出现可以有多个

2、sql_query_pre 这个参数可以多个,主要是在执行主查询之前进行的操作

3、sql_query 这个主查询,主要从MYSQL数据库中拿到要建立索引的数据,

sql_query = select 必须是主键,搜索的字段名,搜索的字段名 from 表名

4、sql_attr_uint 设置属性 ,可以多个,属性字段必须在主查询时查询出来

[matches] => Array

(

[29] => Array

(

[weight] => 1

[attrs] => Array

(

[cat_id] => 14  设置属性

)

)

[30] => Array

(

[weight] => 1

[attrs] => Array

(

[cat_id] => 14

)

)

)

3、生成索引

Indexer.exe  -c 配置文件  参数(--all 表示所有的索引 | 索引名称)

indexer.exe  -c .\etc\csft_mysql.conf --all

indexer.exe  -c .\etc\csft_mysql.conf mygoods(索引名称)

4、开启searchd服务  端口号默认是9312

searchd.exe -c .\etc\csft_mysql.conf

注意:

如果开启服务后,再次重新建立索引,需要重启服务

5、引入sphinxapi接口或者安装sphinx扩展

6、进行实例化对象,查询数据

require "sphinxapi.php";

$sphinxapi = new SphinxClient();

$sphinxapi->SetServer(‘127.0.0.1‘, 9312);

$result = $sphinxapi->Query(‘移动‘, ‘mygoods‘);

print_r($result);

案例:

比如:一个论坛,数据量比较大,此时采用sphinx全文搜索进行优化,

遇到一个问题是: 论坛中的贴子每天都会增加

比如:

贴子表中,有1000条记录

我们建立索引

第二天:

又增加1000条记录

这时怎么处理

我们又要重新创建索引

第n天:

贴子数量达到1亿条

我们又要重新创建索引

解决办法:

使用   增量索引

增量索引的原理:

原有一个主索引  1000条记录

增加的1000条记录 生成一个增量索引

然后将增量索引的数据合并到主索引

增量索引怎么使用:

1、配置增量索引

主数据源

source delta{

}

主索引

index main{

}

增量数据源

source deltasrc:delta{

}

增量索引

index delta: main //增量索引{

./bin/indexer --merge test1 test1stemmed  --rotate

source = deltasrc

}

注意:

名称不要有下划线(有可能是这样)

如果文件名为 csft.conf 这是 ./bin/indexer --merge  zengmy company --rotatesphinx默认的文件名

这样就不用在indexer -c 配置文件名(可以省略)  --all

2、生成增量索引

./bin/indexer 增量索引文件名

3、合并增量索引和主索引

./bin/indexer --merge 增量索引文件名 主索引文件名 --rotate(平滑启动searchd服务)

到此:增量索引完毕(增量索引只解决了一次性创建比较多数据慢的问题,但是解决不了自动更新索引问题)

增量索引+LINUX中的计划任务(又叫实时索引)--可以解决实时更新的问题

s

新增一个计数表:

sph_count

id  max_id

1     7

增量配置

source zengcom:company

{

sql_query    = SELECT id,name,address FROM company where id > select max_id from sph_count where id = 1

sql_query_info_pre = 更新sph_count的SQL语句

update count set max_id =select max(id) from company

}

创建LINUX计划任务,每隔5分钟自动执行下面两条语句(最好是创建一个shell脚本,因为在LINUX中计划任务有很多,这样方便修改和维护)

./bin/indexer 增量索引文件名

./bin/indexer --merge 增量索引文件名 主索引文件名 --rotate(平滑启动searchd服务)

时间: 2024-10-15 21:20:18

sphinx 使用的相关文章

mac 下 sphinx + mysql + php 实现全文搜索(xampp)

原理: 使用sphinx 中的indexer 生成索引数据 service/web 端 利用searched 调用索引数据 步骤: 下载 sphinx: 下载地址:http://sphinxsearch.com/downloads/release/  这个可以根据自己电脑的系统来下载相应的安装包. ps:我是mac,所以 我下载了mac安装包,按照文档上的安装 发现不行,后来 我下载了第一个 即 Source tarball (tar.gz), 才安装成功的. 安装sphinx 参考地址:htt

sphinx中复合属性字段sql_attr_multi的用法

sphinx中复合属性字段sql_attr_multi的用法 sql_attr_multi在sphinx可以用来检索有层级关系的数据,效率相当高,如,在数据库中用一个4层的分类,分类下对应着不用的文章,现在需要做一个文章列表,要求,选择第一级分类时属于它的子分类的文章也要显示出来,就可以用下面的方法建索引 sql_query=                 SELECT di.company_document_id as id,di.company_document_id,          

linux配置sphinx

1. 配置索引 cd /usr/local/sphinx/etc/ cp sphinx.conf.dist sphinx.conf //备份配置文件,防止改错 vim sphinx.conf 配置文件结构: # 主数据源,(main名字可更改) source main{ type = mysql #数据库类型 sql_host = localhost #MySQL主机IP sql_user = test #MySQL用户名 sql_pass = #MySQL密码 sql_db = test #M

php+中文分词scws+sphinx+mysql打造千万级数据全文搜索

Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成.当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据.Sphinx创建索引的速度为:创建100万条记录的索引只需3-4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒.Sphinx的

sphinx初识

sphinx(SQL Phrase Index),查询词组索引. 定义:Sphinx是一个全文检索引擎. 特性: 1.高速索引 (在新款CPU上,近10 MB/秒); 2.高速搜索 (2-4G的文本量中平均查询速度不到0.1秒); 3.高可用性 (单CPU上最大可支持100 GB的文本,100M文档); 4.提供良好的相关性排名 支持分布式搜索: 提供文档摘要生成: 5.提供从MySQL内部的插件式存储引擎上搜索 支持布尔,短语, 和近义词查询: 6.支持每个文档多个全文检索域(默认最大32个)

【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)

一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测试配置]) Mysql源码包 (必须选择与你已安装mysql的版本一致) 为了避免安装中出现依赖包缺失,你需要打一句鸡血: yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel exp

sphinx教程 命令(1)

语句分析: SHOW STATUS;        显示一些很有用的性能计数器.仅当 searchd 启动时带有 --iostats 和 --cpustats 开关时,IO和CPU计数器才分别可用. SHOW META;           显示关于上一条查询的一些额外的元信息(meta-information),比如查询时间和关于关键词的统计信息: 查询工具分析: indexer 命令参考 indexer 是Sphinx的两个关键工具之一.不管是从命令行直接调用,还是作为一个较大的脚本的一部分

sphinx实时更新

1 创建一个表[保存已经创建好的商品的最大ID]->能够根据这个ID找出哪些商品还没创建索引 每次创建好索引之后把最大的ID存进去,定期取出新的商品创建索引,创建完新的索引之后再把最大的ID更新到这个表 /************sphinx表***********/ drop table if exists p40_sphinx_id; create table p40__sphinx_id ( id mediumint unsigned not null default '0' commen

php 安装 sphinx

我的环境是 ubuntun ,所以 第一步 sudo apt-get install pear 第二,根据 php.net 里说的,去下载 sphinx. 第三,pecl install sphinx_你下好的版本,但是这里会报错,需要你安装了 sphinx 的client 版本. 然后这里的client 版本又依赖另一个东西.我下好的问题件 libsphinxclient-dev_2.0.4-1.1ubuntu2_i386.deb 依赖 libsphinxclient-0.0.1_2.0.4-

sphinx续4-coreseek的工作原理

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