分享

百度搜索结果标题长度的深入研究解析

 昵称57840009 2018-08-10


1234567890123456789012345678901234567890123456789012345678901...
 省略符号 在第 62 个数字前截断,(61+3) 字节 //serp

 随机抽取的4个64字节标题都出现省略符号 ,63 字节更符合实际。

 超过63字节百度通过分词技术减少到相应字节数,范围在 ([58,61]+3) 字节内。

 可能百度先用分词技术,分成多个单词放在数组里,并行计算每个词的字节,这样改 字数统计函数性能相对一次性计算所有文字长度快得多。事后将各数组合起来的长度,再加上其他规则,小于64字节的部分作为展现标题。

 即:如果标题长度是32个汉字,会减少1-3个汉字用省略符号 取代。

 英文是山寨谷歌的截断法,减少最后1个单词,按标题最后1个单词长度决定,通常会比中文减少更多字节。

 中西文符号混杂情况,减少字节范围位于上述两者间。

 与标题长度1-64字节范围的常识不同,从1数到10都知道是10个,而4-13会错认为只有9个,据减法,(4 - 1) = (13 - 10),距离相等,亦是10个。

 百度搜索开放平台现有展示模板的xml格式样例及规范的一条注释给出了更为精确的字节数。

 资源名称,即展示在百度搜索结果页中的标题,长度限制为4-63字节。

 触发截断上限63字节,0也算1字节,0-63亦有64个字节。

 至于为何0也算一个字节,因为触发标题字节数下限是小于3字节,有些网页冇标题标签(title tag)或标题容器内为空等,这几种可能被百度默认为0字节。

 将个人网站首页标题改为2字节的we,没有展现完整标题亦无截断,而是触发了F2 = xxxxxx68网址的较低优先级标题策略。

 wei 3 字节 //serp

 再改为3字节的wei,展现完整标题,标题恢复为F2 = xxxxxx6B网页标题。

 msdn 的内容不在搜索引擎预期要查找的位置提及:

 如果 title 标记包含少于五个字符,则搜索引擎可能会认为其比较长标题的相关性低。

 如果 title 标记不包含文本,则搜索引擎可能会认为其根本没有相关性。

 另外,还有超过63字节的特殊案例:

 百度高级搜索指令filetype: 可以检索pdf, xls, ppt, doc, txt, wps, vsd, rtf, lrc, docx, pptx 等非网页格式文件,有前缀标题提示,不计入标题长度。

 【LRC】2017 CCTV Star of Outlook English Talent Competition 2017... //serp

 docx 格式不被计算入搜索结果标题长度内,兼有早期模版bug,搜索结果标题实际上限是(7+61+3) 字节。

 分析 bug 可能原因:

 案例:

 【LRC】如何使用css让div居中对齐_百度文库 【网页搜索】本地搜索模块
 如何使用css让div居中对齐_百度文库 【网页搜索】结果页模版

 百度本地搜索结果中出现【LRC】前缀,标准结果页却显示Word图标,可能是早期模版没有被PK掉所致。

 (3)、百度数据开放平台标题长度限制和截断条件注释

 《百度搜索开放平台现有展示模板的xml格式样例及规范》里另一条注释:

 资源所在页面的链接地址,用于显示在搜索结果的下方。不需要有 http:// 的部分;Showurl 的长度限制为 2-42 字节,如果超过 42 字节,请截断,并增加省略符号 ,并保证截断后的 showurl 加上省略符号总长度不超过 42 字节。

 百度没有直接提及网页搜索结果展现标题截断字节数的上下限,所以我将《样例及规范》的两处注释结合如下:

 使用主流的中文环境操作系统,浏览器等(字符编码为 UTF-8, GB2312, BIG5 等),展示在百度中文搜索结果页(字符编码为 UTF-8, GB2312, BIG5 等)的网页型标题,长度限制为 3-63 字节(2 byte title 长度 64 byte),如果 F 参数所指的标题策略是 F2 = xxxxxx6B,短于 3 字节或超过 63 字节的非百度产品的普通结果(AS)会自动截断,并增加省略符号 ,截断后加上省略符号的 title 长度限制为 3-64 字节。

 百度设置一个不符合现实常见的标题长度,可能是技术导向公司单纯地想不到标题长度亦是用户体验一部分,只是从计算机本身二进制的规则角度考虑,最长 64 字节,抓取过来标题长度超出 63 的多了去了,不显示浪费资源。机械的把 8 的平方作为标题长度。一直到了智能手机上,百度算是改变了愚昧做法,把字节数改成 3 - 52 字节。

 (4)、截断与分词技术 | 超出标题字节上限的失控

 关于分词技术,我曾在SEM技术《》一文中,跟大家做过详细的介绍了,一般来说,分词是在截断前执行,案例:

 

 林依晨宣布订婚(图)_网易新闻中心 //serp

 百度搜索 林依晨订婚 , 林依晨和订婚 是分开飘红的,可以推测百度事先已经分过词,飘红后再计算分开的每个词汇字数是否超出了64字节。

 案例:

 小学作文_小学作文大全_小学作文题目_素材_百度文库作文库_百度文库 //网页

 网上没有找到百度网页搜索分词的源代码,用百度音乐前端的 Chinese Segment (基础语料分词示例)勉强代替。

 分词结果:

 小学 作文 _ 小学 作文 大全 _ 小学 作文 题目 _ 素材 _ 百度 文库 作 文库 _ 百度 文库

 小学作文_小学作文大全_小学作文题目_素材_百度文库作..._百度文库 //serp

 分词后的截断并非机械地按照超过63字节上限加省略符号,而是计算到第50个字节作,虽然后面还有内容,但省略符号占3字节,_百度文库占9字节,若再加一个汉字,(50+3+9+2) = 64 就超出63字节上限,便去掉文库,在第50个字节作这儿截断。

 //拼接title
 $data[ offsetInfo ][ title ] = \2 .$queryInfo[ wordNoSyntax ]. \3_百度文库

 百度文库的标题长度,末尾的 _百度文库 是占用9字节的标题,所以文库的标题长度只要超过54字节就会出现省略号...。

 百度搜索结果展现的最短标题测试:

 

 搜索发现由于百度对韩文|朝鲜语支持有限,出现bug,加上展现的标题会自动过滤掉百度数据库里标题的空格,所以在4字节的情况下,却只展现1个逗号,不知还有无不能点击的空标题,否则1字节已经是百度可见最短标题了。

 (5)、标题前出现图标或提示词

 关于网站图标的问题,SEM以下面这个案例跟大家分析一下:

 不受分词技术影响的截断测试:

 

 机械联盟网-品牌导购-设备租赁-二手设备-配件-招聘求职-用机养... //serp

 机械联盟网-品牌导购-设备租赁-二手设备-配件-招聘求职-用机养机-... //serp

 3字节的 机- 被 favorites icon(网站图标) 挤掉,而末尾的省略符号 不变。可能类似 CSS 里 text-overflow: ellipsis,使末尾处变成省略号。

 从上面看到很难事先控制超出63字节百度会在哪里截断标题,因而建议pc端普通标题长度不超过63字节,展现网站图标的标题长度不超过(64-3)=61字节。

 (6)、标题后缀为百度自家产品品牌

 案例:

 营销人员如何通过在线营销转变他们的业务Forrester.How..._百度文库 //serp

 后缀 _百度文库 占去9字节,可控标题长度为63 - 9 = 54字节。

 常见百度产品实际可控标题字节上限(长期更新)

 _百度百科 54 字节
 _百度知道 54 字节
 _百度贴吧 54 字节
 _百度文库 54 字节
 _百度经验 54 字节

 (7)、特殊F参数影响标题长度调查

 百度F2参数的第7,8位含义是搜索结果前后标题策略,与普通的F2 = xxxxxx6B网页标题是否会有所不同,限于篇幅,只用百度搜索结果7种标题样式较长的一种F2 = xxxxxxEB链接锚文本(-)网页标题测试。

 SEM - 百度权威数据报告指出低质站泛滥,优质站将受益 - 网络...
 (6+3+50+3) 字节 //serp

 开头的SEM是许多网页上加了以作者名字的链接锚文本,( - )是百度连接前后标题策略自动添加的,之后显示网页标题中的前50个字节,最后标题超出63字节,以3字节省略号截断。

 结论是截断策略是在F参数所指的标题策略后执行,发现搜索结果标题不同于原先设想后,可以查看F2第7,8位,再做相应调整。

 譬如搜索个人网站域名,百度赐予的奇葩标题,您可能想看我的,查看HTML源码 F2 = xxxxxx6E 权值标签,而真实H1标签是: h1 您可能想看我的 a href= http://www./longcheng/p/1.html SEM技术 /a 。 /h1

 H1标签嵌套锚文本标签内容及结尾的句号被百度过滤掉,执行标题策略,仅剩下暧昧的 您可能想看我的 : h1 a href= http://www./longcheng/p/1.html您可能想看我的SEM技术 /a 。 /h1

 事后重构H1标签嵌套结构,完整展现H1容器内的文本。

 (8)、分析百度标题规则优先级

 关于百度标题各个规则优先级的梳理,以PC端为例:

 ①、服务器

 a、百度蜘蛛判断网页编码字符集。

 b、抓取网页标题,部分繁简转换。

 c、部分全角标点符号转换半角标点符号。

 d、阿拉丁结果(sp)、最新相关信息(中间页)等优先级高于过滤重复标点符号。

 e、把连续重复超过3次的部分标点符号替换为3次。

 ②、客户端

 a、选择何种编码的百度搜索(UTF-8, GB2312, Big5, etc.)

 b、搜索框输入查询字符串

 c、 百度一下 替换不同编码,并将部分全角符号替换为半角符号及安全过滤。

 d、HTML 实体转换

 e、是否开启不纠错策略 f=12 nojc=0(开),f=13 nojc=1(闭)

 ③、服务器

 a、编码转换

 b、F2-78 参数所指策略

 c、标题前后缀

 d、分词技术

 e、匹配飘红

 f、计算可展现字数

 g、各种截断

 ④、客户端

 a、展现在用户眼前的可见标题(3-64字节)

 b、点击标题

 ⑤、服务器

 用户点击过的标题以4-65字节长度存入数据库。

 2、平板电脑

 百度Pad版研究不多,新买了一块iPad mini 2测试Pad版搜索结果标题长度,大致和PC端规则一致。

 3、智能手机

 关于百度移动搜索标题字数上限,我们先看一个案例:

 SEOSEM-SEO教程,SEO方法,SEO技术,网站优化,网络推广! 52 字节 //serp
 SEMSEO技术-最权威的SEO技术研究和网站优化学习平台.. (51+2) 字节 //serp
 11人足球网 - 天下足球|PES2015|FM2015|FIFA15|足球.... (48+4) 字节 //serp

 目前智能手机的两大主流操作系统:安卓和iOS,先拿三星手机浏览器Android 4.2测试了下,将标题复制 + 粘贴到字数统计性能比较工具里计算,不触发截断上限是52字节。

 又上京东分24期买了个iPhone4s Safari浏览器iOS 7.1.2测试,PC端访问m.baidu.com,有前缀当前页排名 + 后缀2点省略号,到了iPhone上,无前缀当前页排名,但后缀可能有4点省略号,长度范围在 (50+2+[2,3]) 个字节,其它规则与PC, iPad端类似。

 123456789012345678901234567890123456789012345678901234567890123_斗破苍穹吧_百度贴吧 83 字节 //网页

 搜索结果只显示 3 字节省略符号 ...。

 展现下限亦是3个省略号,最少标题是3字节,与PC, Pad版相同,不再赘述,建议移动端标题范围是3-52字节。

 二、标题长度的其它发现

 在对标题长度做了常规测试以后,除了以上的结果,我们还有以下几点新的发现,在此也在SEM技术上跟大家分享一下:

 1、PC端

 首先,我们先来看一下PC端的新发现,具体来说,有以下几点:

 (1)、省略符号不止出现于标题末尾

 案例:

 ...123456789012345678901234567890123456789012345678901234567890 //serp

 第1种情况是省略符号 作为前缀。

 ...batang开头的字库文件,这个文件大小为15.5 MB 和 C:..._百度知道 //serp

 第2,3种情况是省略符号作为前后缀出现,并且末尾还有 _百度知道 ,实际标题只显示了48字节。

 (2)、百度按照标题宽度折行

 .t{font-weight:normal;font-size:medium;margin-bottom:1px}

 标题字体大小是默认的中等,而常见的16px, 540 / 16 = 33.75,一行最多展示33个汉字,大于64字节。

 百度是按标题总的宽度截断,而非字数,只需查看CSS便可证明。

 #content_left {
 width:540px;
 padding-left:138px;
 padding-top:5px;
 }

 搜索结果宽度

 #rs table {
 width:540px;
 }

 有趣的是相关搜索宽度和搜索结果宽度保持一致。

 案例:

 是否折行的测量标准按您的浏览器字体字号而不同。

 

 当chrome浏览器配置是一个阿拉伯数字宽度为9 px,SERP显示是540px,只能放60个9px的宽度,不可避免出现两行标题。

 (3)、百度搜索结果标题HTML实体转换现象

 虽然可见标题长度是(61+3)字节,但HTML实体转换为字符前,源代码的搜索结果标题长度可以不止(61+3)字节。

 案例:

 Don t use ABCDEFGHIJKLMNOPQRSTUVWXYZ `1234567890-=~!@#$%^ *()... //serp

 您所看到的实质是浏览器经过一次HTML实体转换的标题,在浏览器中查看HTML源代码

 Don #039;t use ABCDEFGHIJKLMNOPQRSTUVWXYZ `1234567890-=~!@#$%^ amp;*()...

 (4)、PC端访问手机端百度的标题长度上限

 SEMSEO技术-最权威的SEO技术研究和网站优化学习技术 53 字节 //网页
 SEMSEO技术-最权威的SEO技术研究和网站优化学习技术 52 字节 //网页

 SEMSEO技术标题比较特殊,标题末尾有空格,PC端是2个空格,展现时候没有空格,HTML源码则保留1个空格,而移动端是1个空格,被算作搜索结果标题的一部分。

 另外,PC端访问m.baidu.com如下:

 10 SEMSEO技术-最权威的SEO技术研究和网站优化学习技术.. (3+51+2) 字节 //serp
 1 SEMSEO技术-最权威的SEO技术研究和网站优化学习技术.. (2+51+2) 字节 //serp

 位置前缀似乎不被计入标题长度,10 和 1 是一样的。如果去掉位置前缀,但保留空格,标题长度是 53 字节,网页标题末尾的 1 个空格反被 2 点省略号替换。不过智能手机上没有截断。

 SEOSEM-SEO教程,SEO方法,SEO技术,网站优化,网络推广!53 字节 //网页
 SEOSEM-SEO教程,SEO方法,SEO技术,网站优化,网络推广! 52 字节 //网页

 PC端访问m.baidu.com,搜索 SEOSEM-SEO教程,SEO方法,SEO技术,网站优化,网络推广! ,显示完整标题,而搜索 SEOSEM-SEO教程,SEO方法,SEO技术,网站优化,网络推广 ,最后一个感叹号被2点省略符号替换。目标网页标题最后是全角感叹号(2 字节),而百度展现的是半角感叹号(1 字节),但智能手机端无此现象。

 PC端访问m.baidu.com标题截断算法不同于真正智能手机访问m.baidu.com的算法。若要在PC端访问m.baidu.com都不出现省略符号,建议在使用1个感叹号、逗号等全角符号的情况下,字节小等于52字节。

 最后分析下网页标题中的全角标点符号具体分为5种情况。

 ①、转换为半角(可能包含于繁简转换词库),过滤重复。

 ②、不转换为半角,过滤重复。

 ③、不转换为半角,不过滤重复,与半角标点符号是同义词。

 ④、pc端访问m.baidu.com,搜索词包含可转换半角标点符号,转换为半角,过滤重复。

 ⑤、pc端访问m.baidu.com,搜索词不包含可转换半角标点符号,不转换为半角,过滤重复

 (5)、过滤反复出现的标题符号

 急急急急急急急,难难难难难****** HELP ME!!!!! -CSDN论坛-CSDN.SEO-... 68 字节 //网页
 急急急急急急急,难难难难难*** HELP ME!!! -CSDN论坛-CSDN.SEO-... 62 字节 //serp

 百度将 ****** 和 !!!!! 分别过滤为 *** 和 !!! 。

 【图】【【【【【【【【世嘉日常保养之材料选择】】】】】】】】_世嘉论坛_汽车之家论坛 82 字节 //网页
 【图】【【【世嘉日常保养之材料选择】】】_世嘉论坛_汽车之家论坛 62 字节 //serp

 连续并且重复3次以上的鱼尾号 【 替换为 【【【 ,而1个不连续的鱼尾号 【 不受影响。

 (6)、全角标点符号转换为半角

 下面这些全角标点符号在普通搜索结果(as)会被替换为半角,在百度搜索框内输入下列标点符号即可看到替换现象。

 | == | 竖线
 , == , 逗号
 ; ==  分号
 : == : 冒号
 ? == ? 问号
 ! == ! 叹号
 - == - 连接号
 ( == ( 左圆括号
 ) == ) 右圆括号
 { == { 左花括号
 } == } 右花括号
   ==  左单弯引号
   ==  右单弯引号

 2、智能手机

 接下来,我们再来看一下智能手机端的新发现,具体来说,有以下几点:

 (1)、标题折行

 百度移动搜索优化指南2.0提到:

 ①、用户在百度移动搜索中输入query搜索到你的页面时,title作为最重要的内容展现在搜索结果中,主题明确、吸引眼球的title能够使用户第一时间理解你页面的主题是否符合他的需求,进而更快捷地从众多搜索结果中选择你点击你。

 ②、主题明确;

 ③、简洁扼要,不罗列,尽量不超过17个中文汉字,否则会折行;

 ④、如果你的品牌知名度高,品牌词最好能够展现出来;

 ⑤、吸引眼球。

 17个汉字似乎是iPhone4s竖屏只有320宽度展现的上限附近,原理与百度按照标题宽度折行类似。

 (2)、百度搜索结果标题HTML实体转换现象

 %27 是用 URL 编码形式表示的 ASCII 字符(十六进制格式),十六进制格式用于在浏览器和插件中显示非标准的字母和字符。

 【百度对关于url中带#被收录的问题反馈】里澄清道:

 关于 url 中带 # 被收录,之前跟站长平台的刘老师反馈过了,她让百度工程师看了一下,特说明如下:

 ①、百度是根据转码后的 url 进行抓取的,之前大家发现搜索结果中出现 # 的 url 的 case,一般是原 url 把 # 转码成了 %23(url 编码转码的知识大家网上搜就知道了);如http://www./longcheng/p/1.html (这个 url 中的 s/%23 实际上是转码后的 s/#)

 ②、当百度抓取转码后的 url,在搜索结果中又把 %23 解码成 #,因此大家看到了搜索结果中出现 # 的url。

 三、中英文混合字数统计代码比较

 工欲善其事,必先利其器 ,分析百度搜索结果标题长度前,先要找到适宜的字数统计工具,只是为了您的阅读体验,放到后面才介绍。

 1、字节

 字节(B)是 Byte 的中文,多用作存储容量单位,亦可作为传输容量单位。英文维基百科解释:

 The byte /?ba?t/ is a unit of digital information in computing and telecommunications that most commonly consists of eight bits.【字节(读音: 百特)是计算与通信中一种数字信息单位,1 字节代表 8 比特最常见。】

 1 字节(Byte) = 1 个英文字符(UTF-8 编码) = 8 比特(bit) = 8 位二进制数字

 2、百度计算中文长度验证

 汉语字符不同于英语字符,有3种常见长度,分别是2,3,4字节。

 案例:

 百度搜索结果URL参数解析疑问 - 搜外问答

 ?php echo strlen( 百度搜索结果URL参数解析疑问 - 搜外问答 ?
 中文 16 个字符
 非中文 6 字节
 PHP strlen() 函数
 华文 = (54 - 6) / 16 = 3 字节
 改 字数统计函数
 华文 = (38 - 6) / 16 = 2 字节

 接下来,我们在来看看百度计算朝鲜语长度验证:

 韩国延世大学医院(?????? ??)-综合医院-韩国馆-帮5买

 韩国延世大学医院(?????? ??)-综合医院-...

 非韩文长度为 32 字节,???????? 根据上述截断规则,8 个韩文是 4 8 = 32 字节。

 照着朝鲜语一路推下去,各种转码字节数很难用改 字数统计函数兼容,实际上百度仅对几种转码较为支持,将中文转为小语种导致的乱码字节数通常大于字数统计函数64字节上限。下面亦提到用户电脑上没有安装适合的字体也无法正常显示和正常统计字节。

 XML及其子集XHTML采用UTF-8作为标准字集,理论上我们可以在各种支持XML标准的浏览器上显示任何地区文字的网页,只要电脑本身安装有合适的字体即可。可以利用 #nnn; 的格式显示特定的字符。nnn 代表该字符的十进制Unicode代码。如果采用十六进制代码,在编码之前加上 x 字符即可,但部分旧版本的浏览器可能无法识别十六进制代码。

 中日韩统一表意文字:

 但是另一方面,也有批评认为 Unicode 收入大量错讹字及写法高度相似的同一字的不同字形本身就是不应该的。电脑文本本身永远不可能完全无损地记录文献,且文献本身也会因传抄制版等原因略有不同,如果把每个字的各种写法全部编码,不仅浪费空间,而且检索困难,写法稍有不同就无法检出,以至于检索字词时必须反复检索其不同写法,造成重复劳动,对文献研究反而是种妨碍,例如 Unicode 中将避讳的缺笔字也进行编码,在检索文献时,这些字无法检索出,反造成困扰。完全无损地研究、记录文献只能通过查看原本或照相复印版来完成,把无损保存转嫁给编码是错误的。

 通过百度搜索的实际情况,结合维基百科对 Unicode 的简介,很可能是采用一一对应的方式简单地把 UTF-8, GBK, BIG5, etc. 编码的繁体字词自动转换为简体字词以提升检索速度。

 引用后来随着我们不断的执着的去强调必须一秒内出结果,必须99.9甚至99.99%,而省略了十进制或十六进制Unicode代码,导致出现了百度搜索繁体字,却很少在SERP看到繁体字的现象。反之无法或很难检索到十进制或十六进制Unicode代码的华文。非要完美在百度搜索结果展现繁体字,并被搜索到,通过编码是不合情理的,更好的建议是在缩略图里展示异体字。

 百度查询词过滤机制(filter):检索词带有 http:// 会被自动过滤掉,其他一些会造成恶意攻击的字符亦会被过滤。

 3、百度字数统计函数与计算搜索结果标题是否为同一函数

 案例:

 

 Рослинництво, тваринництвотавет...
 百度改 字数统计函数 63 字节
 正则表达式 45 字节
 PHP strlen + mb_strlen 函数 48.5 字节

 截图中上方标题约为下方标题长度一半,都触发截断,只有改 字数统计函数的计算结果与前述标题字节上限结论一致。

 其他2种字数统计能解释标题长度为何较短,但与触发标题字节上限误差较大。

 4、速度测试

 ★★☆☆☆ 2 星 改 字数统计函数采用 for 循环遍历每个字符,速度较慢,适合少量计算。

 ★★★☆☆ 3 星 正则表达式处理较短单一字符集有优势。

 ★★★★★ 5 星 PHP strlen + mb_strlen 函数的优点是无论多少字数,速度快捷稳定。

 5、兼容性测试

 案例:

 (3 个间隔号)
 改 字数统计函数 6 字节
 正则表达式 4 字节
 PHP strlen + mb_strlen 函数 4.5 字节

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多