快应用内容搜索,现已基于 sitemap 标准开放,开发者可以通过 sitemap.json
配置允许厂商对页面进行索引。配置后,搜索后台的爬虫通过技术手段访问快应用页面,为内容建立索引。当用户在各个场景触发关键字时,可以展示在搜索列表中,并能直达快应用。
爬虫访问快应用页面时,会携带特定的 user-agent : qa-crawler
信息供后端参考;而快应用前端判断爬虫的依据为: global._inSpider = true
在快应用工程 src
目录下,新增 sitemap.json
文件,表示该应用将允许被爬虫索引。为保证良好的开发体验,您的快应用开发工具(IDE),建议更新到 v4.0
以上。
具体配置说明:
sitemap.json
文件用来配置快应用页面是否允许被爬虫索引,可对特定页面的索引进行开启或者关闭;this.$page.setMeta
接口设置与当前页面相关的标题、缩略图、摘要等必要信息。sitemap.json
文件 rules 字段定义了索引集,每项页面索引规则是一个 json 对象,属性如下所示:
属性 | 类型 | 必填 | 默认值 | 取值 | 取值说明 |
---|---|---|---|---|---|
rule | string | 是 | "enable" | "enable"、"disable" | 命中该规则的页面是否能被索引 |
page | string | 是 | "*"、页面的路径 | 页面路径,为核心匹配规则;* 表示所有页面均可收录,暂时不支持正则表达式 | |
params | string[] | 否 | [] | 页面参数,为辅助匹配规则,当 page 字段指定的页面在被本规则匹配时可能使用的页面参数名称的列表(不含参数值), 即 key 值数组;不影响根据 page 匹配到的页面,但会优先索引同时命中 params 的页面。快应用页面可基于 public 内定义的同名属性获取到参数 value 值 | |
lastmod | string | 否 | 上次修改时间,用于引擎抓取优化。时间格式需符合 ISO-8601标准, 如 2020-06-16T03:01:21Z |
注:
{ "rule": "enable", "page": "*" }
是 rules 的默认规则, 爬虫遵循无禁止即允许的基本原则。假设 manifest.json
中已有如下页面:
"router": {
"entry": "pages/A",
"pages": {
"pages/A": {
"component": "index"
},
"pages/B": {
"component": "index"
},
"pages/C": {
"component": "index"
},
"pages/D": {
"component": "index"
}
}
},
sitemap.json
示例一{
"rules": [
{ "rule": "enable", "page": "pages/A", "params": ["foo", "bar"] },
{ "rule": "disable", "page": "pages/B" },
{ "rule": "enable", "page": "*" }
]
}
pages/A?foo=1&bar=2
=> 优先被索引pages/A
=> 被索引pages/B?foo=1&bar=2
=> 不被索引pages/B
=> 不被索引pages/C
=> 被索引pages/D
=> 被索引注:最终路径是否带参数不会影响爬虫索引,但是会影响索引的优先级,爬虫优先索引包含配置了具体参数的页面。
sitemap.json
示例二{
"rules": [
{ "rule": "enable", "page": "pages/A" },
{ "rule": "enable", "page": "pages/B" }
]
}
pages/A
=> 被索引pages/B
=> 被索引pages/C
=> 被索引pages/D
=> 被索引注:由于{ "rule": "enable", "page": "*" }
是 rules 的默认规则,所以如上配置(无禁止项)会让所有页面都能被爬虫访问索引到。
sitemap.json
示例三如果只想允许 A,B 两个页面被索引到,简约的配置方式如下:
{
"rules": [
{ "rule": "enable", "page": "pages/A" },
{ "rule": "enable", "page": "pages/B" },
{ "rule": "disable", "page": "*" }
]
}
pages/A
=> 被索引pages/B
=> 被索引pages/C
=> 不被索引pages/D
=> 不被索引1090+
根据 sitemap 的配置,爬虫可以对页面进行索引,页面收录后,需要抓取到有效的页面信息,才会有机会展示在厂商各个场景的搜索结果中;开发者可以通过调用 this.$page.setMeta
接口设置与当前页面相关的标题、缩略图、摘要等必要信息。
setMeta 接口在爬虫中可以即时使用,不受版本影响。但是快应用平台需要 1090+ 才支持,所以建议使用时做兼容处理,避免在低版本快应用平台上报错,参考使用示例。
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
title | String | 是 | 当前页面用于搜索的标题。注:通过 setMeta 设置的标题仅用于搜索,页面 titleBar 标题请通过setTitleBar 设置 |
description | String | 是 | 当前页面内容摘要 |
pic | String | 否 | 当前页面内容缩略图的在线地址。注:缩略图及其质量对收录和召回权重有重要影响,缺少缩略图也会丧失部分场景投放资格,导致数据价值降低 |
keywords | String | 否 | 描述页面内容的关键词,多个可用逗号(英文状态下)隔开 |
// setMeta 接口为1090新增,可以用以下方式兼容在低版本平台的运行。
if (this.$page.setMeta) {
this.$page.setMeta({
title: '什么叫奥运会',
pic: 'https://pic.com/olympic.png',
description:
'奥运会即奥林匹克会东辉,是由国际奥林匹克委员会主办的世界规模最大的综合性运动会,发源于两千多年前的古希腊,因举办地在奥林匹亚而得名。',
keywords: '奥运会, 古希腊'
})
}
欲提升页面的收录效果,请遵循优化指示 搜索优化指南
厂商 | 支持 | 备注 |
---|---|---|
小米 | no | - |
中兴 | no | - |
华为 | no | - |
金立 | no | - |
联想 | no | - |
魅族 | no | - |
努比亚 | no | - |
OPPO | YES | - |
vivo | YES | - |
一加 | no | - |