搜索功能

简易搜索规则:
- 忽略空格和大小写,模糊搜索,只匹配标题
 ##双井号开头,搜索除第一个#号以外的内容#12单个井号加数字,跳转到对应序号的服务器(WebUI 不支持)
示例:
a B C 1 搜索标题包含 abc1 字符的服务器。##123 搜索标题包含 #123 字符的服务器。#123 跳转到序号为 123 的服务器。#0 因为不存在零号服务器,所以跳转到最后一个。
高级搜索格式:
#<标签名> [not] <操作符> <参数1> <参数2> ...
- not 为可选参数,表示对后面的条件取反
 - 参数中用到后面 “组合搜索” 的符号 
&|!()时需要添加双引号 
| 文本型标签名 | 说明 | 
|---|---|
| name | 服务器名字 | 
| summary | 服务器摘要(协议@地址) | 
| title | 服务器标题(序号+名字+摘要) | 
| mark | 标记 | 
| remark | 备注 | 
| tag1-3 | 标签 1-3 | 
| core | 自定义 core 名 | 
| selected | 是否已选中,内容是字符串 true 或者 false | 
| 文本型操作符 | 说明 | 
|---|---|
| is | 完全相同 | 
| has | 包含 | 
| like | 模糊匹配(默认操作符) | 
| starts | 匹配开头 | 
| ends | 匹配结尾 | 
| match | 使用c#正则表达式匹配(区分大小写) | 
注:除了 match 以外,其他操作符都忽略大小写。match 可以添加 (?i) 忽略大小写。
示例:
#mark is a B C 搜索 “标记” 是 “abc” 的服务器。文本类型的参数会合并起来。#mark abc 搜索 “mark” 中出现 “abc” 三个字母的服务器。文本类型默认操作符是 “like”#mk has abc 因为 “mk” 可以匹配 “mark” 和 “remark” 两个标签名,他们任意一个包含 “abc” 都会搜到。#sel not f 搜索已勾选的服务器。相当于 #selected not like false#name is "" 搜索 “名称” 为空白的服务器。#name has " " 搜索 “名称” 中包含空格的服务器。#name has """ 搜索 “名称” 中包含引号的服务器。#smm match "(?i)\.net$" 搜索 “摘要” 以 “.net” 结尾的服务器,忽略大小写。
| 数字型标签名 | 说明 | 
|---|---|
| index | 序号 | 
| latency | 测速延迟(ms),没测速的是 -1,超时是个很大很大的数 | 
| upload | 上传量(MiB) | 
| download | 下载量(MiB) | 
| port | inbound 端口号 | 
| modify | 修改日期,格式:240230,年份可以省略 | 
| 数字型操作符 | 说明 | 参数个数 | 
|---|---|---|
| = | 相等(默认操作符) | 1 | 
| < | 仅小于 | 1 | 
| > | 仅大于 | 1 | 
| ~ | 数值范围包括首尾 | 2 | 
示例:
#idx 3 序号为 3 的服务器。因为默认操作符是 =,所以相当于 #index = 3#idx not > 10 搜索序号小于等于 10 的服务器。#latency > 100 300 搜索测速结果大于(不包括)100ms 的服务器。后面多余的参数300被忽略掉。#latency ~ 1 1000 搜索测速结果在 [1ms, 1000ms] 之间的服务器。#latency ~ 123 参数个数不足搜索失败。#modify = 0230 搜索二月三十日导入的服务器。#index 参数个数不足搜索失败。
组合搜索:
#<高级搜索1> <组合操作符> #<高级搜索2> <组合操作符> #<高级搜索3> ...
- 默认从左向右组合,可以添加
()括号调整组合顺序 
| 组合操作符 | 说明 | 左边 | 右边 | 结果 | 
|---|---|---|---|---|
& | 交集 | [a, b] | [b, c] | [b] | 
| | 并集 | [a, b] | [b, c] | [a, b, c] | 
! | 补集 | [a, b] | [b, c] | [a] | 
其中 & 操作符的作用和 linux 的管道类似
示例:
#idx < 3) | (#idx ~ 6 7 缺失的括号会自动在头尾补全。搜索结果序号:[1, 2, 6, 7]#smm starts trojan & #name is "" 搜索 trojan 协议并且名字是空白的服务器。#smm has .ws & (#idx < 10 ! #idx = 5) 搜索除 5 号外前 9 个服务器中使用 ws 协议的服务器。
辅助过滤器
排序过滤器:
#orderby [-]<标签名1> [-]<标签名2> ...
- 通常和 
&组合操作符一起使用 - 标签名可以是“文本型标签名”或者“数字型标签名”
 - 默认升序排列,标签名前面添加 
-(减号)表示降序排列 - 排序是个耗时的操作,尽量放后面
 
示例:
#ord -idx 按序号降序排列。#idx ~ 1 30 & #ord smm -lat 对前 30 个服务器先按摘要升序排列,摘要相同时再按延迟降序排列。#idx ~ 1 30 & #ord zzz 不存在 zzz 这个标签名,结果为空。
截取过滤器:
#take <截取数量> <跳过数量>
- 通常和 
&组合操作符一起使用 - “截取数量”为负数时,将从尾部截取(v2.1.3+)
 - “跳过数量”可以省略,不可以是负数
 
示例:
#idx > 5 & #take 3 搜索结果:[6, 7, 8]#idx < 20 & #take -2 搜索结果:[18, 19]#idx < 20 & #ord -idx & #take 3 3 搜索结果:[16, 15, 14]#idx < 20 & #take 3 3 & #ord -idx 搜索结果:[6, 5, 4]
#idx ~ 22 25 | #take 2 我也不知道和 & 以外的组合操作符放一起会发生什么。
注释过滤器(v2.1.3+)
#note 任意字符串
- 返回空集合,通常和 
|组合操作符一起使用 - 必须输入全名,不能像其他标签名那样缩写
 
示例:
#note 显示第 2 个服务器 | #idx 2
跳转命令(v2.1.3+)
#goto <组合搜索>
- 必须是 
#goto开头,跳转到 <组合搜索> 的第一个结果 - 如果结果为空,则跳转到第一个服务器
 - 如果 <组合搜索> 解释失败,则把整个字符串当作 <组合搜索> 处理
 - WebUI 不支持这个功能
 
示例:
#goto (#note "跳转到第 21 个服务器" | #idx 21)#goto (#idx 23 | #idx 21) 跳转到第 23 个服务器,因为后面的 <组合搜索> 结果是 [23, 21]#goto & #idx ~ 21 23 后面的 <组合搜索> 解释失败,& 左边结果为空,整体结果为空。#goto | #idx ~ 21 23 解释失败,搜索结果:[21, 22, 23]
快捷键
Ctrl + F 进入搜索框Esc 离开搜索框