用coreseek快速搭建sphinx中文分词搜索引擎 的文章链接为: http://blog.zhuyin.org/789.html 本文假设您已经建立好coreseek的普通索引应用了 下面基于这个基础,谈谈如何实现实时索引! #建立实时索引的配置文件 vi /usr/local/coreseek/etc/sphinx_index_r
用coreseek快速搭建sphinx中文分词搜索引擎 的文章链接为:
http://blog.zhuyin.org/789.html
本文假设您已经建立好coreseek的普通索引应用了
下面基于这个基础,谈谈如何实现实时索引!
#建立实时索引的配置文件
vi /usr/local/coreseek/etc/sphinx_index_rt.conf
index rtindex { type = rt path = /dev/shm/rtindex docinfo = extern mlock = 0 morphology = none min_word_len = 1 html_strip = 0 charset_dictpath = /usr/local/mmseg3/etc/ charset_type = zh_cn.utf-8 rt_field = title rt_field = content rt_attr_uint = groupid rt_attr_bigint = biguid rt_attr_float = score rt_attr_timestamp = date_added rt_attr_string = author rt_attr_string = title rt_attr_string = content rt_mem_limit = 512M } searchd { workers = threads listen = 9312 listen = 127.0.0.1:9306:mysql41 read_timeout = 5 max_children = 30 max_matches = 1000 seamless_rotate = 0 preopen_indexes = 0 unlink_old = 1 pid_file = /usr/local/coreseek/var/log/searchd_rtindex.pid log = /usr/local/coreseek/var/log/searchd_rtindex.log query_log = /usr/local/coreseek/var/log/query_rtindex.log binlog_path = /usr/local/coreseek/var/log/rtindex/ binlog_flush = 2 binlog_max_log_size = 16M }
上面的属性就不一一说了,只要留意
rt_field
rt_attr_uint
rt_attr_bigint
rt_attr_string
……
之类的就好,因为这些属性关系到您要索引的字段以及得到的结果是否包含这些字段的内容!
当然
rt_mem_limit
binlog_max_log_size
pid_file
之类的,请根据自己的实际环境设置好。
配置好上面的配置后
#实时索引不需要indexer!!,也就是不需要下面两句的命令了
#/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx_index_rt.conf –all
#/usr/local/coreseek/bin/search -c etc/csft.conf -a Twittter
#直接开启searchd /usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/sphinx_index_rt.conf #创建管理命令 echo '/usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/sphinx_index_rt.conf' > /root/sphinx_start echo 'killall searchd' > /root/sphinx_stop echo 'killall searchd sleep 4 /usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/sphinx_index_rt.conf' > /root/sphinx_restart chmod 755 /root/sphinx*
这个时候您
ps awx|grep searchd
应该有以下的进程在跑了:
到这里表明实时索引服务已经启动,下面就是自己写程序往数据源添加内容了。
在此要特别说明一下:
sphinx的实时索引配置本身并不需要数据源(source),它的数据是要通过程序利用
localhost:9306:mysql41协议的方式,往里面加。
下面就写一段实际应用的php代码吧:
比如我有一个文章表 news 需要做实时索引
那在插入、删除、修改 news表的内容的同时,您得写一段类似下面的代码来对实时索引的内容进行更改:
//插入到news表的操作完成后 //连接到实时索引,使用MySQL41协议 $link = mysql_connect('127.0.0.1:9306') or die('connect bad'); if (!$link) { echo mysql_errno() . ": " . mysql_error(). "\n"; exit; } //$id应该是前面插入news表的时候返回的news_id。 $sql="INSERT INTO rtindex(id,title,content,groupid,biguid,score,date_added,author) VALUES ( $id, '$title', '$content', $groupid,$biguid,$score,$date_added,'$author')"; mysql_query($sql); if(mysql_errno()) { echo mysql_errno() . ": " . mysql_error(). "\n"; echo $sql; exit; }
在做实时索引查询的时候,php代码如下
//连接到实时索引,使用MySQL41协议 $link = mysql_connect('127.0.0.1:9306') or die('connect bad'); if (!$link) { echo mysql_errno() . ": " . mysql_error(). "\n"; exit; } $query=mysql_query("SELECT * FROM rtindex WHERE MATCH('你好吗??')"); if(mysql_errno()) { echo mysql_errno() . ": " . mysql_error(). "\n"; exit; } while($row=mysql_fetch_array($query,MYSQL_ASSOC)) { print_r($row); } die;
当然,上面的php代码都没经过优化,只是很粗糙地完成了这个过程,实际的代码可能会封装成类/方法等等。
关于实时索引的建立及应用,到此结束。
如果大家有不同的建议,欢迎留言,大家一起交流!
原文地址:【原创】sphinx实时索引的配置及实际应用、实例, 感谢原作者分享。

存储过程是MySQL中的预编译SQL语句集合,用于提高性能和简化复杂操作。1.提高性能:首次编译后,后续调用无需重新编译。2.提高安全性:通过权限控制限制数据表访问。3.简化复杂操作:将多条SQL语句组合,简化应用层逻辑。

MySQL查询缓存的工作原理是通过存储SELECT查询的结果,当相同查询再次执行时,直接返回缓存结果。1)查询缓存提高数据库读取性能,通过哈希值查找缓存结果。2)配置简单,在MySQL配置文件中设置query_cache_type和query_cache_size。3)使用SQL_NO_CACHE关键字可以禁用特定查询的缓存。4)在高频更新环境中,查询缓存可能导致性能瓶颈,需通过监控和调整参数优化使用。

MySQL被广泛应用于各种项目中的原因包括:1.高性能与可扩展性,支持多种存储引擎;2.易于使用和维护,配置简单且工具丰富;3.丰富的生态系统,吸引大量社区和第三方工具支持;4.跨平台支持,适用于多种操作系统。

MySQL数据库升级的步骤包括:1.备份数据库,2.停止当前MySQL服务,3.安装新版本MySQL,4.启动新版本MySQL服务,5.恢复数据库。升级过程需注意兼容性问题,并可使用高级工具如PerconaToolkit进行测试和优化。

MySQL备份策略包括逻辑备份、物理备份、增量备份、基于复制的备份和云备份。1.逻辑备份使用mysqldump导出数据库结构和数据,适合小型数据库和版本迁移。2.物理备份通过复制数据文件,速度快且全面,但需数据库一致性。3.增量备份利用二进制日志记录变化,适用于大型数据库。4.基于复制的备份通过从服务器备份,减少对生产系统的影响。5.云备份如AmazonRDS提供自动化解决方案,但成本和控制需考虑。选择策略时应考虑数据库大小、停机容忍度、恢复时间和恢复点目标。

MySQLclusteringenhancesdatabaserobustnessandscalabilitybydistributingdataacrossmultiplenodes.ItusestheNDBenginefordatareplicationandfaulttolerance,ensuringhighavailability.Setupinvolvesconfiguringmanagement,data,andSQLnodes,withcarefulmonitoringandpe

在MySQL中优化数据库模式设计可通过以下步骤提升性能:1.索引优化:在常用查询列上创建索引,平衡查询和插入更新的开销。2.表结构优化:通过规范化或反规范化减少数据冗余,提高访问效率。3.数据类型选择:使用合适的数据类型,如INT替代VARCHAR,减少存储空间。4.分区和分表:对于大数据量,使用分区和分表分散数据,提升查询和维护效率。

tooptimizemysqlperformance,lofterTheSeSteps:1)inasemproperIndexingTospeedUpqueries,2)使用ExplaintplaintoAnalyzeandoptimizequeryPerformance,3)ActiveServerConfigurationStersLikeTlikeTlikeTlikeIkeLikeIkeIkeLikeIkeLikeIkeLikeIkeLikeNodb_buffer_pool_sizizeandmax_connections,4)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver CS6
视觉化网页开发工具

记事本++7.3.1
好用且免费的代码编辑器

禅工作室 13.0.1
功能强大的PHP集成开发环境

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。