nixos search
1.0.0
该存储库包含search.nixos.org
的脚本和 Web 应用程序。
最初的想法是替换 NixOS 包和选项搜索,后者获取包含所有包(或选项)的一个 JSON 文件。这种方法的优点是设置简单,但当包数量越来越大时,它的问题就开始显现出来。我确信我们可以进一步优化它,但是如果后面有一些数据库,我们能做什么,我们会忍不住尝试。
对于后端,我们使用 Elasticsearch 实例,该实例由 bonsai.io 赞助。在前端我们使用 Elm。
我们要解决的用例是访问者想要查看某个包是否存在或查找某个包的详细信息。
如果可能的话,用户希望收敛到单个结果。添加到搜索查询中的字符越多,搜索范围就越窄,我们应该显示的结果越少。
搜索结果的排名也非常重要。这会将更相关的搜索结果带到顶部,因为很多时候很难生成仅输出一个结果项的搜索查询。
不太重要,但提供更好的用户体验。是编写更好的搜索查询的建议。建议功能应该引导用户编写更好的查询,从而产生更好的结果。
要开始开发,请打开终端并运行:
env --chdir=frontend nix develop -c yarn dev
您可以将浏览器指向http://localhost:3000
并开始开发。对源文件 ( ./frontend/src
) 的任何更改都将触发应用程序的热重新加载。
main
分支时都会触发 GitHub Action。yarn prod
命令构建 Web 应用程序的生产版本。./dist
中)部署到 Netlify。要将您自己的薄片添加到搜索索引,请编辑 ./flakes/manual.toml。
可能的类型有github
、 gitlab
、 sourcehut
和git
(这是任何类型的 git 存储库的后备,但目前需要手动设置修订密钥)。
要测试您的 flake 是否与 nix flake-info 兼容,您可以尝试对其运行flake-info
$ nix run github:nixos/nixos-search#flake-info -- flake <your flake handle>