
站内搜索是个很不起眼的功能,用的人也不多,但用的人往往是找具体内容的人,转化价值比自己随便逛的高得多。搜不到东西,用户当场就走。搜索结果不准,基本都是词表没维护好。词表不是写完就不管的东西,得跟着用户的实际搜法持续改。
搜索不准通常是三件事
第一,词没被正确切分。中文搜索最怕切错,用户搜“图片压缩工具”,切成了“图片”“压缩”“工具”三个词去匹配,结果出来一堆只提到工具的文章。处理方式是在搜索前先做一次同义词替换,把常见组合词当成整体。
第二,搜了但没有。库里有内容,因为标题和正文用了不同的说法,匹配不上。用户搜“备案”,你的文章标题写“ICP 资质办理”,就搜不到。这类问题占搜索结果差的比例最高,靠同义词表解决。
第三,结果排序差。明明有最匹配的内容,排在了第五页。这不是词表问题,是权重问题,得单独调。
从搜索日志里挖真实词
别拍脑袋想用户会搜什么。搜索框旁边加一个记录,把每次搜索的关键词、时间、结果数量记下来。跑一个月,你会看到真实的搜索分布。
重点看三类记录。第一类是有搜索但零结果的词,这些是明确的内容缺口或者词表缺口,优先级最高。第二类是搜索次数多但点击率低的词,说明结果不匹配,用户看了一眼就走了。第三类是一次都没搜过的词,说明你的内容没有引导用户去搜。
零结果的词怎么处理?分两种。如果这个词确实有价值,说明你缺这个主题的内容,记进选题库,后面补文章。如果这个词是用户表述不同,加进同义词表就行。判断方法很简单:搜这个词的人多不多,多就是有价值。
同义词表怎么建
同义词表就是一组组的词,每组内的词在搜索时视为等价。做法是维护一个文本文件,一行一组,词之间用竖线或者逗号分隔。
比如:备案|ICP|资质|备案号;图床|图片托管|图片存储;伪静态|rewrite|URL重写;CDN|加速|内容分发。每组控制在五个词以内,词太多会稀释匹配精度。
建设的顺序是:先覆盖行业基础词,再覆盖你站内常用的表述,最后补充从搜索日志里挖到的真实说法。别一次建两百组,先用二十组把高频的覆盖掉,跑一周看效果再扩。
同义词表要能热更新。改完不用重启服务,下次搜索就生效。做法是把词表存数据库或者缓存里,加一个后台页面能编辑,改完清一下缓存。写死在代码里的词表,改一次要发一次版,没人愿意改。
停用词和错别字
停用词是搜索时要忽略的词,比如“的”“怎么”“如何”“教程”“下载”。这些词出现频率极高但没有区分度,留着会拖累匹配精度。建一个三十到五十个词的停用词表,搜索前先剔掉。
注意别把有用的词误列进去。“工具”“方法”这类词看着像停用词,但在某些搜索里是关键信息,列进去反而降低效果。判断标准:去掉这个词之后,搜索结果有没有明显变化,没变化才进停用表。
错别字靠两种方式处理。一是拼音匹配,用户打错字但拼音对,也能命中;二是常见错字映射,把“图床”和“图窗”、“备案”和“备安”这类写进同义词组。第二种成本低但覆盖有限,第一种效果好但要求搜索支持拼音索引,看你的程序支持哪种。
结果排序怎么调
排序的目标是让最匹配的排第一。不用做复杂的算法,三个权重够用:标题命中权重最高,摘要命中次之,正文命中最低。再叠加两个信号:内容更新时间近的加权,浏览量高的加权。
具体实现上加一个打分函数,每个结果算出总分再排序。分数不用太精细,能拉开差距就行。调完之后用十几个典型搜索词验证,看第一条结果是不是用户真正想要的。不对就继续调权重,别追求一次到位。
还有个细节:完全匹配要给额外加分。用户搜“图片压缩”,标题正好是“图片压缩怎么做”,这种应该排第一,而不是被一篇只提了一次的长文压下去。
搜索体验上的小细节
三个细节能明显提升搜索使用率。一是搜索框里放提示文字,写“搜工具、搜教程、搜关键词”,比“请输入关键词”具体。二是未输入时给推荐,点进搜索框就显示当前热门的五个词,减少思考成本。三是无结果时别只说“没有找到”,给两个替代方案:换个说法试试、看看大家都在搜什么。
还有个容易忽略的:结果摘要要能看出匹配在哪。用户搜“备案”,摘要里高亮显示“备案”两个字,一眼就知道是不是他要的。不标出来,用户得一个个点进去确认,多数人点两个就烦了。
维护节奏
一个月做一次,一次半小时。三件事:拉搜索日志看零结果和高频低点击的词,更新同义词表,清一遍停用词。动完立刻验证,拿十个词搜一下看结果对不对。
记录也简单,建个表写清楚每次改了什么、为什么改。半年后回看,哪些改动有效一目了然。词表这东西,改得越久越准,前提是每次都留痕。
站内搜索的价值不在技术复杂度,在词表是否贴合用户的真实说法。多花半小时看日志,比换一套搜索程序有用。
