搭建 coreseek && sphinx

做百万/千万级别的全文检索。 每个doc其实是一个名字。 doc有增加和删除。


1 安装 && 测试


http://www.coreseek.cn/news/7/52/


install
http://www.coreseek.cn/products/products-install/install_on_bsd_linux/


install mysql or redirect mysql path
libiconv
http://www.coreseek.cn/product_install/install_on_bsd_linux/#mysql




具体配置可以查看 sphinx速成指南


===========================================================

search -c sphinx.conf  "words"

searchd -c sphinx.conf 启动后台服务


生成所有索引

/usr/local/coreseek/bin/indexer -c sphinx.conf --all

生成单个索引
/usr/local/coreseek/bin/indexer -c sphinx.conf indexname

后台已启动情况下, 更新索引
/usr/local/coreseek/bin/indexer -c sphinx.conf --all --rotate

done....

按照etc/csft_mysql.conf, 设置自身的mysql相应配置, 注意where orderby group中出现的字段类型要用sql_attr_xxx定义。

能直接从数据库中寻找了。

===========================================================


===========================================================

2 短语匹配

因业务需求, 需要匹配用户输入的整个短语串。

search -a SPH_MATCH_ALL

-p SPH_MATCH_PHRASE;  目前看到的是单字符被去掉了。 搜索"goo main", 数据库中的"goo d main"出来了

===========================================================



==============================================================

mysql支持:

登入mysql后, 执行documents.sql导入数据

然后运行indexer和search即可。    数据存储在原mysql的存储引擎中。


中日韩支持:

使用带_cjk后缀的配置文件即可。


实时索引:【未装sphinxSE】

使用带rtindex后缀的配置即可。 无需运行indexer, 直接起searchd, 然后mysql登入配置中指定的端口, 命令行操作即可。

数据未存放在mysql中。


sphinxSE:【装sphinxSE】【待继续】

1) 需要重编译mysql: http://www.coreseek.cn/products-install/mysql5-5-sphinxse/

show engines; 能看到SPHINX.....

大体步骤, svn co 下sphinx, 然后svn up -r到指定版本, 然后执行patch, 再拷贝到mysql/storage/sphinx/ 下; cmake重编mysql、 安装mysql, 进入mysql后install plugin; 然后show engines就可以看到了。【自带的 coreseek/sphinxse/..编译不过, .可能有问题。。?】

sphinxSE实际不存储任何数据, 只是将发往sphinxSE表的查询, 转发给searchd, searchd的位置通过sphinxSE建表时的CONNECTION="sphinx://localhost:9312/rtindex"指定, 表示发往mysql 某个sphinxSE表的查询, 均将转发给localhost:9312的index名为rtindex的东东。


==============================================================


=====================

你可能感兴趣的:(搭建 coreseek && sphinx)