coreseek是基于sphinx的专攻中文的独立搜索引擎,官网地址http://www.coreseek.com/
具体的安装部署,官网上已经很详细了,我只谈一下使用体验
1. 做类似于like的查询,之前也在网上搜索很多,大致有2种办法,其中一种就是我现在正在使用的一种方式“一元切分”(http://www.coreseek.cn/products-install/ngram_len_cjk/)。
首先是索引大小,250w的新闻记录,索引大概是5.6G,比我预期的要好得多。
其次是性能,250w的数据,有排序,有过滤,有group,最变态的查询都在4s内完成。
再就是索引速度,250w的数据,大概在5分钟之内完成
2. 增量索引的效果确实有些让人失望,不知道是我的用法上出现了问题,还是在本生就是coreseek的bug。在每次用--rotate的参数创建增量索引时,都没法搜索到最新的数据,都需要重启searchd的服务。
3. 官方的提供的python的api,UpdateAttributes函数,我怎么执行都返回的-1,就是函数执行失败
之前用的api是版本问题,冲coreseek的安装包里拿的python的api,api里有一堆错误。到https://github.com/jsocol/sphinxapi拿到最新的api,就解决了。
4. sql_attr_timestamp是配合mysql的UNIX_TIMESTAMP函数使用,需要注意的是UNIX_TIMESTAMP只支持1970-1-1 08:00:00到2038-01-19 11:14:07,大于最大的或者小于最小的返回的是0,因此如果想用时间进行排序的话,最好是保证时间字段在这个区间内。否则就用SPH_SORT_EXTENDED模式惊醒排序。
5. 在SPH_MATCH_EXTENDED搜索模式下,如果出现了A&B|C,一定要注意优先级。在python里&的优先级是要高于|的,但是在sphinx的优先级设是|高于&
6. 在查询的条件越多,耗时越多。注意在客户端设置SetConnectTimeout,如果在这个时间内没有没有能搜索出结果,就会出现没有结果情况