做百万/千万级别的全文检索。 每个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的东东。
==============================================================
=====================