如何搭一个搜索引擎:[2]sphinx篇

2026-04-01 20:25:33

1、准备工作:

下载coreseek源码:http://www.coreseek.cn/ ,按照网上的教程编译、安装好。

coreseek中文文档:http://www.coreseek.cn/docs/coreseek_4.1-sphinx_2.0.1-beta.html

2、修改配置文件:

(各配置项详细说明请认真阅读coreseek中文文档)

1)指定数据源:

一般使用mysql数据库作为源

2)配置索引:

mlock:为1的情况下使得内存中的索引数据不会被系统换出,某些情况下可以提高性能。

min_prefix_len:前缀索引最小长度,如:等于3的情况下,facebook会生成fac face faceb facebo faceboo facebook六个term对于的索引项。

sphinx支持增量索引,方便新增加的数据快速被检索到,而不用重建整个索引,增量部分可以频繁更新,而不需要重建整个索引。索引的实时增、删、改操作都有相应的解决方案。增:可通过增量索引、或rt索引实现(目前只能使用sphinxQL来更新索引);删:通过设置索引属性标志位的方法来实现;改:通过

UpdateAttributes来更新索引属性。注意:索引字段的更新只能通过重建索引。

3)配置检索服务searchd,几个参数说明:

seamless_rotate:支持动态更换索引,即不影响线上检索服务的情况下更换索引,动态换索引的大致原理是采用双buffer机制,用两倍的内存保证在更换索引时又能同时提供服务。

3、创建索引并启动服务:

./indexer -c etc/test.conf --all --rotate

./searchd -c etc/test.conf

只要设置了seamless_rotate=1,下次可以直接使用./indexer -c etc/test.conf --all --rotate来更换索引而不用重启searchd服务了。

4、客户端api使用:

sphinx提供了sphinxapi.php的api程序,并提供了test.php运行脚本,php程序员修改一下即可方便使用。

5、总结:

     sphinx提供了单索引千万级的搜索引擎解决方案,提供了丰富实用的索引、检索、排序、过滤等功能,100w级数据,索引文本大小不到1个G,检索响应时间在10ms以内。对于千万级以下规模、日搜索量在100w以内的强烈推荐使用,避免重复造车轮,吃力不讨好。即使将来数据量、检索量、功能需求进一步增长,也可以很方便地通过sphinx提供的引擎来作扩展。

相关推荐
  • 阅读量:110
  • 阅读量:125
  • 阅读量:48
  • 阅读量:32
  • 阅读量:48
  • 猜你喜欢