Jellyfin的快速全文搜索代理JellySearch
今年不在上海过年。以往回家都是自驾,这次女儿帮忙抢到了高铁票,明天出发。
简介
什么是 JellySearch ?
JellySearch是一个快速的全文搜索代理,专为Jellyfin设计,与大多数Jellyfin客户端无缝集成。
工作原理
- 代理功能
JellySearch 作为 Jellyfin 的搜索代理,接收用户的搜索请求并将其转发到 Jellyfin 服务器。它充当中间层,优化搜索过程。
- 全文搜索
JellySearch 结合了 MeiliSearch 等搜索引擎技术,能够快速处理和索引媒体库中的内容,使用户能够进行高效的全文搜索。
- API 请求
用户通过 HTTP 请求向 JellySearch 发送搜索查询。JellySearch 接收到请求后,解析查询参数并构造适当的 API 请求,然后将其发送到 Jellyfin。
- 结果返回
一旦 Jellyfin 返回搜索结果,JellySearch 会将结果整理并返回给用户。这个过程确保了用户体验的流畅性和快速性。
- 索引管理
JellySearch 可能会定期从 Jellyfin 更新索引,以确保搜索结果的准确性和时效性。这通常由 MeiliSearch 处理,确保数据的最新性。
优点
- 快速搜索:利用高效的全文搜索技术,能够迅速返回搜索结果,提升用户体验。
- 减轻负担:作为
Jellyfin的搜索代理,JellySearch减少了Jellyfin服务器的负担,优化了资源使用。 - 简化查询:提供直观的接口,用户可以轻松输入搜索条件,快速找到所需的媒体内容。
- 实时更新:支持定期更新索引,确保搜索结果的准确性和时效性。
- 拼写错误容忍:搜索功能对拼写错误具有较强的容错能力,用户即使输入不完全正确的关键词,仍然能找到相关结果。
- 跨字段搜索:支持在多个字段中进行搜索,使得用户可以更全面地查找媒体内容,不局限于单一字段。
其他
当然,也不都是优点,也存在某些情况下无法正常工作,甚至存在一些安全性方面的问题,所以需要特别注意安全配置,以保护其媒体库的信息安全。
安装
在群晖上以 Docker 方式安装。
涉及到多个容器,采用 docker-compose 方式安装
nginx.conf
官方的示例使用的是 traefik 做反代,老苏不熟悉,同时也不想使用 https 协议,所以增加了 nginx 容器来做内部代理。
1 | worker_processes 1; |
其中 192.168.0.197 为群辉主机的 IP,而 http://192.168.0.197:8096 则指向了 Jellyfin 服务
为什么不使用 http://jellyfin:8096 这种内部的表达方式,是因为 jellyfin 安装使用的网络模式是 host,因此其实并不在同一个 docker 网络中
docker-compose.yml
将下面的内容保存为 docker-compose.yml 文件
1 | version: '3' |
这里不涉及
jellyfin的使用和硬解,有兴趣可以参考往期的文章。后台的AI客服在搜索能力及信息整合上,还是表现不错的
- 如果你已经安装了
jellyfin,可以去掉docker-compose.yml中的jellyfin部分 /config应该与您的Jellyfin配置目录相同,但只需要读取权限。MEILI_MASTER_KEY可以是任意随机字符串,用于JellySearch和Meilisearch之间的认证。INDEX_CRON确定索引更新的间隔,例如0 0 0/2 ? * * *表示每2小时一次。- 其他环境变量
| 变量 | 描述 | 默认值 | 是否必需 |
|---|---|---|---|
JELLYFIN_URL |
您的 Jellyfin 实例的完整 URL。 |
http://jellyfin:8096 |
是 |
JELLYFIN_CONFIG_DIR |
您挂载 Jellyfin 配置文件夹的目录。 |
/config |
是 |
INDEX_CRON |
运行重新索引的 cron 调度,如果没有它将不会自动重新索引。 |
null |
否 |
MEILI_URL |
您的 Meilisearch 实例可访问的 URL。 |
http://meilisearch:7700 |
是 |
MEILI_MASTER_KEY |
用于与 Meilisearch 进行身份验证的密钥。 |
null |
否 |
然后执行下面的命令
1 | # 新建文件夹 jellyfin 和 子目录 |
运行
在浏览器中输入 http://群晖IP:5454 就能看到 jellyfin 的界面

如果只通过 jellyfin 查询
搜索 异形,浏览器地址是 http://群晖IP:8096/web/#/search.html?query=异形

但是搜索 行星 是没有结果的

而通过 jellysearch 搜索 行星,则是有结果的,
此时浏览器地址是
http://群晖IP:5454/web/#/search.html?query=行星,唯一的区别就在于端口。

因为在简介中有 行星 出现

参考文档
Dominik / JellySearch · GitLab
地址:https://gitlab.com/DomiStyle/jellysearchInstall Jellysearch on native debian Jellyfin installation : r/selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/1hu9zny/install_jellysearch_on_native_debian_jellyfin/