码迷,mamicode.com
首页 > 其他好文 > 详细

sphinx 使用

时间:2015-05-09 13:26:10      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:linux   索引   数据   搜索   优化   

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、数据库配置和索引配置必须成对出现可以有多个

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

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

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

4sql_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_countSQL语句

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

}

 

 

 

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

 

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

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

sphinx 使用

标签:linux   索引   数据   搜索   优化   

原文地址:http://blog.csdn.net/csdn_ndx/article/details/45600299

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!