企业网站运行一段时间后,文章、产品介绍、帮助内容和专题页面会逐渐增加。内容数量不多时,用户可以通过栏目逐层查找;内容越来越多以后,站内搜索的重要性就会明显提高。
但实际维护中经常会遇到一种情况:后台明明已经发布了内容,页面也能够正常打开,输入标题中的文字进行站内搜索时,却没有任何结果。
这类问题不建议只盯着搜索框本身。搜索框只是入口,真正决定结果的是后面的数据读取、内容状态、索引生成和更新同步过程。
一、先确认内容到底有没有进入正式发布状态
排查时可以先从内容状态开始。
很多网站后台并不只有“已发布”和“未发布”两种状态,还可能存在草稿、待审核、定时发布、隐藏、下线等状态。
某些页面可以通过预览方式打开,但并不代表它已经进入面向普通访问者的正式数据范围。
因此先确认几个问题:
当前内容是否已经正式发布;
发布时间是否已经生效;
所属栏目是否正常开放;
页面是否只是通过后台预览地址访问;
搜索程序是否只读取正式发布内容。
如果页面状态本身不符合搜索条件,后面继续检查索引通常没有意义。
二、检查站内搜索到底在搜索哪些内容
“站内搜索”这个名称很宽泛,但实际程序可能只检索其中一部分数据。
例如有的网站只搜索文章标题,有的网站会同时搜索标题和摘要,还有的网站会进一步包含正文、产品名称、分类名称等信息。
如果用户输入的文字只存在正文,而搜索程序只查询标题,就会出现页面里明明存在这段文字,却始终找不到结果的情况。
因此网站建设阶段需要提前确定搜索范围,而不是等内容积累以后再临时调整。
可以先梳理清楚:
哪些内容类型允许被搜索;
标题是否参与检索;
摘要是否参与检索;
正文是否参与检索;
隐藏内容是否需要排除;
过期内容是否继续展示。
搜索范围清楚以后,排查会简单很多。
三、内容数量增加以后要关注检索方式
网站刚上线时,数据量通常较小,使用比较基础的数据库匹配方式也能得到结果。
但随着内容逐渐增加,搜索速度和匹配准确性可能发生变化。
如果每次搜索都在大量正文内容中逐条比较,不仅查询速度可能下降,中文短语、组合词和相近表达的匹配效果也可能不稳定。
这时可以根据网站规模考虑全文索引或独立搜索机制。
如果网站主要使用中文内容,还需要特别关注中文分词。
例如用户搜索“页面缓存”,系统究竟把它作为一个完整短语理解,还是拆成多个词参与匹配,会直接影响返回结果。
因此改造站内搜索以后,不应该只检查“搜索能不能运行”,还应测试不同长度、不同组合方式的中文词语。
四、页面更新和搜索数据可能不是同时完成
部分网站为了提高查询速度,并不会在用户搜索时直接读取所有原始内容,而是另外维护一份用于检索的数据。
这样做有利于提高搜索效率,但也会带来一个新的问题:内容已经更新,搜索数据却没有同步。
一个比较完整的内容流程通常包括:
后台编辑内容;
保存并修改发布状态;
页面读取最新内容;
搜索数据同步更新;
前台重新执行检索。
如果其中搜索同步环节失败,就可能出现页面已经是新版本,而搜索仍然停留在旧状态的情况。
因此排查时,可以重点观察内容发布以后,搜索结果是否会立即变化。
如果新页面始终无法出现,而旧页面修改后仍能搜到旧标题,就需要重点检查搜索数据的同步过程。
五、不要只测试新增内容
站内搜索是否稳定,不能只看“新文章能不能搜到”。
内容生命周期中的其他变化同样需要测试。
例如:
页面修改标题后,搜索结果有没有更新;
正文删除某段内容后,旧关键词是否还会命中;
内容从发布状态调整为隐藏后,搜索结果是否同步消失;
内容重新发布后,是否重新进入搜索范围;
栏目调整以后,搜索结果中的页面路径是否正常。
这些测试可以帮助判断搜索数据是否真正跟随内容变化,而不是只在新增页面时执行一次。
六、缓存也可能让排查结果产生误判
站内搜索页面本身也可能存在缓存。
例如搜索结果被暂时保存,用户再次输入相同内容时,系统直接返回之前的结果。
这会造成一种错觉:后台和搜索数据都已经更新,但前台还是显示旧结果。
因此如果索引已经确认更新,可以继续检查搜索结果页是否存在页面缓存、接口缓存或其他缓存层。
测试时可以使用一个此前没有搜索过的词进行对比。
如果新搜索词能够返回最新内容,而旧搜索词一直显示旧结果,就需要进一步关注结果缓存是否及时失效。
七、建立固定的排查顺序
遇到“页面存在但站内搜索找不到”时,可以按照固定顺序检查。
先确认页面已经正式发布。
再确认搜索程序覆盖了对应的内容类型和字段。
然后查看搜索数据是否已经生成或更新。
接着检查中文检索方式是否能够正确处理当前搜索词。
如果前面的环节都没有异常,再检查缓存。
最后使用多个不同类型的内容进行验证。
按照这个顺序处理,可以减少在数据库、页面和搜索模块之间反复切换。
八、上线前可以准备几组验证场景
一个比较实用的方法,是在网站正式投入使用之前准备多种内容状态进行测试。
可以分别测试:
标题中包含搜索词的已发布页面;
只有正文包含搜索词的页面;
刚刚修改标题的页面;
已经隐藏的页面;
重新发布的页面;
已经删除的内容。
然后观察搜索结果是否符合网站制定的规则。
这种测试方式比单纯确认“搜索框能输入文字”更有意义,因为它验证的是完整的数据链路。
九、站内搜索其实也是网站内容架构的一部分
很多网站建设项目会重点关注首页、栏目页、产品展示和移动端适配,却把站内搜索当成一个后期附加功能。
实际上,内容越来越多以后,搜索已经属于网站信息访问路径的一部分。
如果搜索规则、发布状态和内容索引之间没有统一,网站运行时间越长,搜索结果越容易出现缺失、滞后或混乱。
因此在网站建设阶段,可以提前明确内容进入搜索的条件、字段范围、索引更新方式、内容状态变化后的处理规则以及异常情况下的检查方法。
当再次遇到“页面明明存在,为什么就是搜不到”时,可以先从内容状态和检索范围入手,再逐步检查索引同步、中文匹配和缓存,而不是直接反复修改页面。
本文由梓彤超越(武汉)科技有限公司整理。