php 搜索引擎优化(php为coreseek的API文件,增加如下的定时任务配置)
优采云 发布时间: 2022-02-17 20:18php 搜索引擎优化(php为coreseek的API文件,增加如下的定时任务配置)
一、概览
最近在做业务优化的时候,发现一个业务数据库有很多慢查询。分析原因后发现数据库使用的是MYSQL,单表有150万条记录。. 分析SQL语句,发现数据库被锁主要是因为搜索功能。
二、实现过程
1、第一个优化思路是通过提高硬件性能来实现的,但是硬件成本太高了,而且就这个业务的流量来说,没必要这么高的配置,显然需要软件部分进行优化。LINUX下的MYSQL数据库优化到了极致,调整了可以调整的配置,但还是不能满足业务需求。
2、第二个优化思路是修改表设计,调整程序代码。这种方法可以更好的优化这个问题,但是成本也很高。商业模式已经运行多年,修改的时间成本也很高。
3、第三个优化思路是直接优化搜索点,所以想到了全文索引。虽然MYSQL数据库也支持全文索引,但是这种应用很少见,给数据库带来很大压力。在PHP应用环境中,我们想到了PHP手册,搜索后找到了CoreSeek的解决方案。当然也可以用其他语言解决问题,比如Solr、Lucence,或者比较新的Es搜索方案,但是在这个方案中,我们采用了最简单的方案,直接部署coreseek,然后做一个小改造上网。
4、直接配置,请参考coreseek的安装自行解决。
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#
source main
{
type = mysql
sql_host = 127.0.0.1
sql_user = index
sql_pass =xxxxx
sql_db = xxxxxx
sql_port = 8635 # optional, default is 3306
sql_query_pre = SET NAMES UTF8
sql_query_pre = replace into tb001 select 1,max(nxuh) from tb_xinwen
sql_query_range = select 1,max(nxuh) from tb_xinwen
sql_range_step = 1000
sql_query = \
SELECT nxuh,nxuh as id,clanmmc,cbiaot,cneir,czuozh,ctup,ckeywords, UNIX_TIMESTAMP(dfab) AS dfab \
FROM tb_xinwen where lxians='Y' and nxuh>=$start and nxuh
6、目前coreseek只支持utf8编码,所以需要在检索到中文索引后进行转码。
7、服务器的安全配置需要自己实现。
三、结论
大多数情况下,搜索结果不需要显示所有内容。例如,在百度中,最大显示约为 74 页。这也符合日常需要。如果把所有的内容都抽出来,那就没有意义了。另外,请仔细阅读 API 文档,里面有更详细的细节。