搜索 API
对档案索引执行搜索。
搜索档案。这个 JSON 里的 ID 可以用在其他端点上。
查询参数
- categorystring · min: 14 · max: 14 · pattern可选
- 限定本次搜索范围的分类 ID。
- filterstring可选
- 搜索查询串。可以在这当中使用下列特殊字符: 双引号 ("...") 精确字符串搜索。让一个搜索词可以包含空格;一对双引号内的所有内容会被当成单个词条处理。通配符仍然按通配符解释。 问号 (?)、下划线 (_) 通配符,匹配任意单个字符。 星号 (*)、百分号 (%) 通配符,匹配任意长度的字符序列(也可以一个都不匹配)。 减号 (-) 排除。放在某个词前面,搜索结果就不会包含该词。 美元符号 ($) 加在标签末尾,对该标签做精确搜索,而不是显示所有以该词开头的结果。它只匹配标签,不受搜索参数影响,因此也可以当作排除项,用来在搜索里忽略杂项标签。
- startinteger可选
- 从结果总数中的第几个档案开始枚举。单页显示的档案数取决于服务端的每页条数偏好。 从 0.8.2 起,这里传 "-1" 可以取到完整的、不分页的数据。
- sortbystring可选
- 结果排序所依据的命名空间。可用的排序键有: - *title*:按标题排序 - *lastread*:按上次阅读时间排序(需开启 服务端进度跟踪 ) (默认值是 title。按 lastread 排序时,从未读过的 ID 会被从搜索结果里移除。)
- orderstring可选
- 排序方向,
asc或desc。 - newonlyboolean可选
- 只搜索未读过的档案。
- untaggedonlyboolean可选
- 只搜索未打标签的档案。
- hidecompletedboolean可选
- 隐藏已读到末尾的档案。
- groupby_tanksboolean · default: true可选
- 启用或关闭 Tankoubon 分组,默认开启。 开启时,搜索结果里会显示 Tankoubon,取代它包含的所有档案 ID。
响应
200搜索结果
{
"data": [
{
"arcid": "28697b96f0ac5858be2614ed10ca47742c9522fd",
"extension": "rar",
"filename": "Fate GO MEMO",
"isnew": false,
"lastreadtime": 1337038281,
"pagecount": 34,
"progress": 3,
"size": 0,
"summary": null,
"tags": "parody:fate grand order, group:wadamemo, artist:wada rco, artbook, full color",
"title": "Fate GO MEMO"
},
{
"arcid": "28697b96f0ac5858be2614ed10ca47742c9522fd",
"extension": "rar",
"filename": "Gucc",
"isnew": false,
"lastreadtime": 1337038281,
"pagecount": 34,
"progress": 3,
"size": 0,
"summary": "cool summary",
"tags": "parody:jojo's bizarre adventure",
"title": "Rohan Kishibe goes to Gucci"
}
],
"recordsFiltered": 2,
"recordsTotal": 2
}204搜索引擎尚未初始化完成,请稍等几秒。
该响应没有示例数据。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
原始档案搜索端点(GET /search/archives),共用 /search 的查询参数,但不会把成员档案折叠进 Tankoubon
Section titled “原始档案搜索端点(GET /search/archives),共用 /search 的查询参数,但不会把成员档案折叠进 Tankoubon”尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。
下面这段是 handler 自己的文档注释(crates/lanrurugi-api/src/search.rs:435)的译文;原文以源码为准。
新增的原始档案搜索端点(GET /search/archives),共用 /search 的查询语法、筛选、排序与分页,但绝不把成员档案折叠到 Tankoubon 之后。它刻意是一个独立端点,而不是 /search 上的一个新默认行为:既有的分组搜索调用方保持完全一致的行为,而重复项/库成员检查则可以索取底层的档案记录,而不是一个 TANK_ 聚合体。
响应
200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/search.rs:200 处的 handler。
该响应没有示例数据。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
丢弃搜索缓存
Section titled “丢弃搜索缓存”丢弃存放用户历史搜索的缓存。
响应
200成功响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}400没有档案 ID 的响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
搜索档案 ID
Section titled “搜索档案 ID”与 /api/search 一样搜索档案,但只返回匹配档案 ID 的有序列表,不带随附的元数据。
查询参数
- categorystring · min: 14 · max: 14 · pattern可选
- 限定本次搜索范围的分类 ID。
- filterstring可选
- 搜索查询串,规则与
/api/search相同。 - startinteger可选
- 从结果总数中的第几个档案开始枚举。单页显示的档案数取决于服务端的每页条数偏好。 从 0.8.2 起,这里传 "-1" 可以取到完整的、不分页的 ID 列表。
- sortbystring可选
- 结果排序所依据的命名空间。可用的排序键有: - *title*:按标题排序 - *lastread*:按上次阅读时间排序(需开启 服务端进度跟踪 ) (默认值是 title。按 lastread 排序时,从未读过的 ID 会被从搜索结果里移除。)
- orderstring可选
- 排序方向,
asc或desc。 - newonlyboolean可选
- 只搜索未读过的档案。
- untaggedonlyboolean可选
- 只搜索未打标签的档案。
- hidecompletedboolean可选
- 隐藏已读到末尾的档案。
- groupby_tanksboolean · default: true可选
- 启用或关闭 Tankoubon 分组,默认开启。 开启时,搜索结果里会显示 Tankoubon,取代它包含的所有档案 ID。
响应
200搜索结果
{
"data": [
"28697b96f0ac5858be2614ed10ca47742c9522fd",
"5cf64ec2f3c2c627fb8a64df198af2a8527c4fdb"
],
"recordsFiltered": 2,
"recordsTotal": 2
}204搜索引擎尚未初始化完成,请稍等几秒。
该响应没有示例数据。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
随机搜索档案
Section titled “随机搜索档案”按给定的筛选条件和/或分类,随机取出一批档案。
查询参数
- categorystring · min: 14 · max: 14 · pattern可选
- 限定本次搜索范围的分类 ID。
- filterstring可选
- 搜索查询串,规则与
/api/search相同。 - countinteger · default: 5可选
- 要随机取多少个档案,默认 5。 如果搜索结果的条数不够你要的数量,就返回全部搜索结果打乱后的结果。
- newonlyboolean可选
- 只搜索未读过的档案。
- untaggedonlyboolean可选
- 只搜索未打标签的档案。
- hidecompletedboolean可选
- 隐藏已读到末尾的档案。
- groupby_tanksboolean · default: true可选
- 启用或关闭 Tankoubon 分组,默认开启。 开启时,搜索结果里会显示 Tankoubon,取代它包含的所有档案 ID。
响应
200搜索结果
{
"data": [
{
"arcid": "28697b96f0ac5858be2614ed10ca47742c9522fd",
"extension": "rar",
"filename": "Gucc",
"isnew": false,
"lastreadtime": 1337038281,
"pagecount": 34,
"progress": 3,
"size": 0,
"summary": "cool summary",
"tags": "parody:jojo's bizarre adventure",
"title": "Rohan Kishibe goes to Gucci"
}
],
"recordsTotal": 2
}请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
为书库搜索框的标题自动补全提供数据的轻量端点
Section titled “为书库搜索框的标题自动补全提供数据的轻量端点”尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。
下面这段是 handler 自己的文档注释(crates/lanrurugi-api/src/search.rs:603)的译文;原文以源码为准。
新增的轻量端点,为书库搜索框的标题自动补全提供数据。与 /search 不同,它只返回前几个匹配项中的 arcid + title——没有标签、进度或体积——因为前端每敲一次键(已做防抖)就会调用它,而一次返回 100 条档案记录的完整 /search 页会有几百 KB 的 JSON,建议列表拿到后立刻就丢掉了。查询语法相同、筛选相同、默认的 title 排序也相同(这正是建议列表想要的),并且访客范围限制也相同:这里同样应用 restrict_to_archive_ids,因此 guest_visitor 绝不可能通过这个端点看到一个 /search 会拒绝返回的越界标题。
响应
200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/search.rs:202 处的 handler。
该响应没有示例数据。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。