本文旨在说明在问题列表以及问题详情等页面中,搜索功能的使用技巧。
管理筛选字段
展开筛选项与收起筛选项
打开页面后,默认是收起状态,可以单击展开筛选项,将显示已添加的所有筛选字段。

编辑字段
默认显示当前页面支持的所有筛选字段,用户可以通过单击编辑字段,自由调整期望显示的字段。

说明:
用户调整展示的筛选项后,平台会在浏览器本地保存用户的设置。在没有清除缓存的情况下,下次进入相同页面,展示的是上次设置的字段。
搜索
调整筛选字段后,搜索并不立即生效,需要手动单击搜索,才会真正执行搜索操作。

重置
可以通过单击页面 重置来清空所有筛选项。

筛选字段类型
平台支持的筛选项可以分为这些类型:时间范围、版本类型、数值类型、字符串类型、字符串数组类型、可枚举类型、特殊类型。不同类型支持不同的搜索模式,大部分搜索模式支持输入多个关键字。以下是这些筛选类型的详细说明。
时间范围
时间范围支持5分钟、小时、天、周、月5种聚合粒度。
其中,5分钟和小时聚合只支持最近48小时的数据,包含自定义,最近1小时、今天、昨天三种模式。

天、周、月这三种聚合粒度,支持自定义、最近7天、最近30天、最近90天等模式。

版本类型
版本类型的字段包含 App 版本、SDK 版本、系统版本等筛选字段。支持是、不是、大于、大于等于、小于、小于等于、区间、匹配、不匹配、为空、不为空、开头匹配、开头不匹配、结尾匹配、结尾不匹配、正则表达式搜索模式。
版本类型的字段,本质存储的是一个字符串,同时符合版本规范。所以,版本类型的筛选项同时具备了数值类型和字符串类型筛选项的所有搜索模式。
版本比较:
平台对版本的理解遵循业界推荐格式,即 "主版本号.次版本号.修订号.构建号" ,会先对版本字段进行解析,将其规范化为 A.B.C.D 四部分(解析时从左到右,若版本信息不足四部分则补充0)。然后按照 "主版本号(A)> 次版本号(B)> 修订号(C)> 构建号(D)" 的优先级规则比较两个版本的大小,例如据此规则可得 "4.5.2.1">"4.5.2.0">"4.5.1.99">"4.4.2.100" 。同时,该版本解析与比较规则也适用于系统版本,例如 "Android 7.1.2,level 25" > "Android 6.0.1,level 23" > "Android 5.1,level 22" > "Android 5.0.2,level 21" 。
以下是详细的比较规则:
1. 判断优先层级时,必须(MUST)把版本依序拆分为主版本号、次版本号、修订号及先行版本号后进行比较(版本编译信息不在这份比较的列表中)。
2. 由左到右依序比较每个标识符,第一个差异值用来决定优先层级:主版本号、次版本号及修订号以数值比较。例如:1.0.0 < 2.0.0 < 2.1.0 。
3. 当主版本号、次版本号及修订号都相同时,改以优先层级比较低的先行版本号决定。例如:1.0.0-alpha < 1.0.0。
4. 有相同主版本号、次版本号及修订号的两个先行版本号,其优先层级必须(MUST)透过由左到右的每个被句点分隔的标识符来比较,直到找到一个差异值后决定:
只有数字的标识符以数值高低比较。
有字母或连接号时则逐字以ASCII的排序来比较。
数字的标识符比非数字的标识符优先层级低。
若开头的标识符都相同时,栏位比较多的先行版本号优先层级比较高。例如:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0。
搜索模式 | 说明 |
是 | 字符串的精确比较,支持输入多个关键字,这些关键字是 OR 关系,表示字段的值等于输入关键字中的任意一个时,条件满足。 |
不是 | 字符串的精确比较,支持输入多个关键字,这些关键字是 AND 关系,表示字段的值不等于输入关键字中的任意一个时,条件满足。 |
大于/大于等于 | 版本之间的比较,只允许输入一个关键字,表示字段的值「大于/大于等于」输入关键字表示的版本时,条件满足。 |
小于/小于等于 | 版本之间的比较,只允许输入一个关键字,表示字段的值「小于/小于等于」输入关键字表示的版本时,条件满足。 |
区间 | 版本之间的比较,需要输入两个关键字,例如输入的关键字分别是 A 和 B,A <= x <= B,条件满足。 |
为空 | 表示字段是一个空串时/或者相应字段没有上报时,条件满足。平台不区分无值和空串的情况。 |
不为空 | 表示字段是一个非空串时,即字符串的长度大于0时,条件满足。 |
匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 OR 关系,表示只要字段的值包含输入关键字中的任意一个时,条件满足。 |
不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 AND 关系,表示字段的值不包含输入关键字中的任意一个时,条件满足。 |
开头匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 OR 关系,表示字段的值以输入关键字中的任意一个开头时,条件满足。 |
开头不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 AND 关系,表示字段的值不以输入关键字中的任意一个开头时,条件满足。 |
结尾匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 OR 关系,表示字段的值以输入关键字中的任意一个结尾时,条件满足。 |
结尾不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 AND 关系,表示字段的值不以输入关键字的任意一个结尾时,条件满足。 |
正则表达式 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 OR 关系,表示字段的值以输入关键字中的任意一个时,条件满足。 |
以下通过 App 版本的几个示例来演示版本类型的搜索。
搜索目的 | 操作符 | 输入关键字 | 说明 |
搜索大于'4.5.2'版本的个例 | 大于 | '4.5.2' | 版本为'4.5.2.1'的个例满足条件,但是版本为'4.5.2.0'的个例不满足条件。 |
搜索'4.5.2' 和 '4.5.3' 版本的所有子版本的个例 | 开头匹配 | '4.5.2.', '4.5.3.' | 如果不加后面的'.',会导致'4.5.20.xx' 等类型的版本也包含在内。 |
搜索 hotpatch 版本为499的所有版本的个例 | 结尾匹配 | '(hotpatch:499)' | App 版本包含主版本号和 hotpatch 版本号两部分,正常的表示如下:'4.5.3.1(hotpatch:499)',其中'4.5.3.1'为主版本号。 |
数值类型
数值类型的筛选项包含使用时长、可用内存、卡顿耗时等字段。支持等于、不等于、大于、大于等于、小于、小于等于、区间搜索模式。
数值类型的筛选项,该字段存储的值是数值类型,可能是整数类型,也可能是浮点类型。
搜索模式 | 意义 |
等于 | 支持输入多个关键字,这些关键字是 OR 关系,表示字段的值等于输入关键字中的任意一个时,条件满足。 |
不等于 | 支持输入多个关键字,这些关键字是 AND 关系,表示字段的值不等于输入关键字中的任意一个时,条件满足。 |
大于 | 只支持输入一个关键字,表示字段的值大于输入关键字时,条件满足。 |
大于等于 | 只支持输入一个关键字,表示字段的值大于或者等于输入关键字时,条件满足。 |
小于 | 只支持输入一个关键字,表示字段的值小于输入关键字时,条件满足。 |
小于等于 | 只支持输入一个关键字,表示字段的值小于或者等于输入关键字时,条件满足。 |
区间 | 支持输入两个关键字,例如 left 和 right,表示字段的值等于两者之一,或者处于两者之间时,条件满足。 |
以下通过使用时长的几个示例来演示数值类型的搜索。
搜索目的 | 操作符 | 输入关键字 | 说明 |
搜索使用时长大于30秒的个例 | 大于 | 30 | 使用时长的单位是秒,所以输入30即表示30秒。 |
搜索使用时长在30分钟到1小时之间的个例 | 区间 | 1800, 3600 | 使用时长的单位是秒,30分钟即1800秒,1小时即3600秒。 |
以下再通过自定义维度的 n1字段来演示数值类型的搜索,假定业务使用 n1来表示机型的划档,分为5分档,从低到高为1到5 。
搜索目的 | 操作符 | 输入关键字 | 说明 |
搜索1档和2档机型上报的个例 | 是 | 1,2 | 表示搜索n1 = 1 or n1 = 2 的个例 |
搜索1档和3档之外的其他机型的个例 | 不是 | 1, 3 | 表示搜索 n1 != 1 and n1 != 3的个例 |
搜索大于等于3档的机型的个例 | 大于等于 | 3 | 表示搜索 n1 >= 3 的个例 |
搜索2到4档的机型的个例 | 区间 | 2, 4 | 表示搜索 2 <= n1 <= 4 的个例 |
字符串类型
支持是、不是、匹配、不匹配、同时匹配、为空、不为空、开头匹配、开头不匹配、结尾匹配、结尾不匹配、正则匹配、正则不匹配搜索模式。
字符串类型的筛选项包含出错堆栈、出错线程、出错进程、消息 ID 、设备 ID 、用户 ID 、场景、机型、厂商等。
搜索模式 | 意义 |
是 | 字符串的精确比较,支持输入多个关键字,这些关键字是 OR 关系,表示字段的值等于输入关键字中的任意一个时,条件满足。 |
不是 | 字符串的精确比较,支持输入多个关键字,这些关键字是 AND 关系,表示字段的值不等于输入关键字中的任意一个时,条件满足。 |
为空 | 表示字段是一个空串时/或者相应字段没有上报时,条件满足。平台不区分无值和空串的情况。 |
不为空 | 表示字段是一个非空串时,即字符串的长度大于0时,条件满足。 |
匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 OR 关系,表示只要字段的值包含输入关键字中的任意一个时,条件满足。 |
同时匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 AND 关系,表示字段的值包含输入关键字中的所有时,条件满足。 |
不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 AND 关系,表示字段的值不包含输入关键字中的任意一个时,条件满足。 |
开头匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 OR 关系,表示字段的值以输入关键字中的任意一个开头时,条件满足。 |
开头不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 AND 关系,表示字段的值以输入关键字中的任意一个开头时,条件满足。 |
结尾匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 OR 关系,表示字段的值以输入关键字中的任意一个结尾时,条件满足。 |
结尾不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 AND 关系,表示字段的值不以输入关键字的任意一个结尾时,条件满足。 |
正则匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 OR 关系,表示字段的值以输入关键字中的任意一个时,条件满足。 |
正则不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是 AND 关系,表示字段的值不以输入关键字的任意一个时,条件满足。 |
以下通过出错堆栈的几个示例来演示字符串类型的搜索。
搜索目的 | 操作符 | 输入关键字 | 说明 |
搜索出「出错堆栈」中包含'com.tencent.rumpro'包名的个例 | 匹配 | 'com.tencent.rumpro' | 堆栈通常包含多个函数帧,这里需要用包含,而不是开头匹配。 |
搜索出「出错堆栈」中同时包含'com.tencent.rumpro'和'com.tencent.rmonitor'包名的个例 | 同时匹配 | 'com.tencent.rumpro', 'com.tencent.rmonitor' | 同时匹配表示,出错堆栈需要同时包含指定的所有关键字。 |
以下通过错误进程的几个示例来演示字符串类型的搜索。假定一个业务包含多个进程,详细如下:
业务进程 | 进程类型 |
com.tencent.demo | 主进程 |
com.tencent.demo:video_1 | 视频进程 |
com.tencent.demo:video_2 | 视频进程 |
com.tencent.demo:game_1 | 游戏进程 |
com.tencent.demo:game_2 | 游戏进程 |
com.tencent.demo:xg_vip_service | 服务进程 |
com.tencent.demo:pm_service | 服务进程 |
com.tencent.demo:decode_service | 服务进程 |
com.tencent.demo:encode_service | 服务进程 |
搜索目的 | 操作符 | 输入关键字 | 说明 |
搜索出只出现在主进程的个例 | 是 | com.tencent.demo | 采用字段值的精确匹配 |
搜索出只在视频进程出现的个例 | 开头匹配 | com.tencent.demo:video_ | 通过开头匹配来找到视频进程 |
搜索出在视频进程或者游戏进程出现的个例 | 开头匹配 | com.tencent.demo:video , com.tencent.demo:game | 通过输入多个关键字来达到效果 |
搜索出不在服务进程出现的个例 | 结尾不匹配 | _service | 通过结尾不匹配来搜索不在服务进程发生的个例 |
字符串数组类型
字符串数组类型表示字段的值是一个字符串数组,包含自定义维度的 a1-a10、实验 ID、个例标签、业务下钻等字段。
字符串数组类型支持包含、不包含、同时包含、匹配、同时匹配、为空、不为空、开头匹配、结尾匹配等搜索模式。对于字符串数组的比较,大部分模式最终比较的是字符串数组中的每一个字符串。
搜索模式 | 意义 |
包含 | 字符串的精确比较,支持输入多个关键字,这些关键字是 OR 关系,表示这些关键字中的任意一个在字段值中时,条件满足。 |
不包含 | 字符串的精确比较,支持输入多个关键字,这些关键字是 AND 关系,表示所有关键字都不在字段值中时,条件满足。 |
同时包含 | 字符串的精确比较,支持输入多个关键字,这些关键字是 AND 关系,表示所有关键字都在字段值时,条件满足。 |
匹配 | 字符串的模糊比较,支持输入多个关键字,这些关键字是 OR 关系,表示字段值中的任意一个字符串包含输入关键字中的任意一个时,条件满足。 |
同时匹配 | 字符串的模糊比较,支持输入多个关键字,这些关键字是 AND 关系,表示字段值中的任意一个字符串同时包含所有输入关键字时,条件满足。 |
为空 | 表示字段的值是一个空数组时,条件满足。 |
不为空 | 表示字段的值不是一个空数组时,条件满足。 |
开头匹配 | 字符串的模糊比较,支持输入多个关键字,这些关键字是 OR 关系,表示字段值中的任意一个字符串以输入关键字中的任意一个开头时,条件满足。 |
结尾匹配 | 字符串的模糊比较,支持输入多个关键字,这些关键字是 OR 关系,表示字段值中的任意一个字符串以输入关键字中的任意一个结尾时,条件满足。 |
例如用户利用 a1字段上报了最近访问的几个页面名称,其中登录页包含两种 Model,'LoginModeOnePage' 和 'LoginModeTwoPage',以下是一些上报个例的a1字段的值。
上报个例 | a1字段的值 |
1 | ['LoginModeOnePage', 'MessageListPage', 'FriendDetailPage'] |
2 | ['LoginModeTwoPage', 'MessageListPage', 'FriendListPage'] |
3 | ['LoginModeTwoPage', 'MessageListPage', 'FriendListPage', 'FriendDetailPage'] |
4 | ['MessageListPage', 'FriendListPage', 'FriendDetailPage'] |
5 | ['FriendListPage', 'MessageListPage', 'FriendDetailPage'] |
下面通过自定义维度 a1的几个示例来演示字符串数组类型的搜索。
搜索目的 | 操作符 | 输入关键字 | 说明 |
搜索出包含登录页的个例,如上述中的1,2,3个例 | 包含 | 'LoginModeOnePage', 'LoginModeTwoPage' | 因为登录页包含两种 Model:'LoginModeOnePage' 和 'LoginModeTwoPage'。 |
搜索出包含登录页的个例,如上述中的1,2,3个例 | 开头匹配 | 'Login' | 通过'Login'来匹配登录页的两种 Model。 |
搜索出同时包含登录页和好友详情页的个例,如上述中的1,3个例 | 同时匹配 | 'Login','FriendDetailPage' | 这里不能用同时包含是因为'LoginModeOnePage'和'LoginModeTwoPage'不会同时出现。 |
搜索出没有执行过登录操作的个例,如上述中的4,5个例 | 不包含 | 'LoginModeOnePage', 'LoginModeTwoPage' | 不包含是包含的否定关系。 |
可枚举类型
可枚举类型是支持多选的下拉框,下拉框包含全部以及该字段所有的选项。可枚举类型的筛选项包含版本类型、前后台状态、设备类型等字段。
可枚举类型可能存储的是布尔类型的值、字符串,或者整数类型。无论是哪一种类型,可枚举类型肯定是值可枚举的类型,并且值的类型不会太多,一般不会超过10项。
可枚举类型默认是选择全部,表示不筛选指定类型。用户可以通过下拉框,选择要匹配的类型,一般支持多选。
筛选字段 | 枚举值 |
版本类型 | 不限、开发版、灰度版、正式版 |
前后台状态 | 所有、前台、后台 |
设备类型 | 真机+模拟器、真机、模拟器 |
下面通过版本类型的几个示例来演示可枚举类型的搜索。
搜索目的 | 选中项 | 说明 |
搜索所有开发版上报的个例 | 开发版 | 表示只搜索开发版的个例。 |
搜索出灰度版和正式版上报的个例 | 灰度版, 正式版 | 表示只要是灰度版、正式版类型中的一个,条件满足。 |
搜索所有版本上报的个例 | 不限 | 当选中「不限」选项时,不能同时再选择其他的选项。 |
特殊类型
特殊类型的筛选项支持 OR、AND 两种搜索模式,包含联动标记、异常现场、附件等字段。
搜索模式 | 意义 |
OR | 支持选择多个选项,这些选项之间是 OR 关系。 |
AND | 支持选择多个选项,这些选项之间是 AND 关系。 |
下面通过崩溃问题列表的 联动标记 的几个示例来演示特殊类型的搜索。
搜索目的 | 操作符 | 输入关键字 | 说明 |
搜索出崩溃前发生过卡顿或者 Java 内存泄漏的个例 | OR | 卡顿,Java 内存泄漏 | 只要发生过卡顿,或者发生过 Java 内存泄漏的个例都算条件满足。 |
搜索出崩溃前发生过卡顿而且发生过 Java 内存泄漏的个例 | AND | 卡顿,Java 内存泄漏 | 卡顿以及 Java 内存泄漏都发生过的个例才满足条件。 |