搜索 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」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
Forget one entry
Section titled “Forget one entry”What the search panel’s Delete key calls on a highlighted history row. Removes every occurrence, so a hand-edited list cannot leave a row the reader cannot dismiss.
查询参数
- filterstring必填
- The exact history entry to forget.
响应
200The history after the removal.
{
"history": [
""
]
}400No filter to forget was given.
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}403The caller has no account to keep a history for.
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
The account’s recent searches
Section titled “The account’s recent searches”Newest first, at most 8 entries (the cap the browser-side version kept). With filter, only the entries related to it, judged with the engine’s own folding, so くろ still offers a stored クロガネ; without it, the whole history. A caller with no account (e.g. a read-only token) gets an empty list; guests are denied by the route policy.
查询参数
- filterstring可选
- What the reader is typing; limits the answer to the related entries.
响应
200The (possibly filtered) history.
{
"history": [
""
]
}请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
Remember one applied filter
Section titled “Remember one applied filter”Moves the entry to the front, removing any previous occurrence and trimming to the cap, in one atomic pipeline. Called only for a genuinely applied filter.
请求体
application/json
响应
200The history after the write.
{
"history": [
""
]
}400The filter was empty.
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}403The caller has no account to keep a history for.
{
"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」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。