Этот репозиторий содержит сценарии и веб-приложение для search.nixos.org
.
Первоначальная идея заключалась в том, чтобы заменить поиск пакетов и параметров NixOS, который извлекал один файл JSON, содержащий все пакеты (или параметры). Этот подход хорош своей простой настройкой, но начал проявлять свои проблемы, когда количество пакетов становилось все больше и больше. Я уверен, что мы могли бы оптимизировать его дальше, но идеи о том, что все-таки мы могли бы сделать, если бы сзади была какая-то база данных, были очень соблазнительными и не пытаться.
В качестве бэкэнда мы используем экземпляр Elasticsearch, любезно спонсируемый bonsai.io. На фронтенде мы используем Elm.
Вариант использования, который мы хотим решить, заключается в том, что посетитель хочет узнать, существует ли пакет, или просмотреть сведения об определенном пакете.
Пользователь хочет, если это возможно, прийти к единому результату. Чем больше символов добавляется в поисковый запрос, тем более узким становится поиск, и мы должны показывать меньше результатов.
Очень важным является также ранжирование результатов поиска. Это выведет наверх более релевантные результаты поиска, поскольку во многих случаях сложно создать поисковый запрос, который будет выводить только один элемент результата.
Менее важный, но обеспечивающий лучший пользовательский опыт. это предложения по написанию лучшего поискового запроса. Функция предложения должна помочь пользователю писать более качественные запросы, что, в свою очередь, приведет к лучшим результатам.
Чтобы начать разработку, откройте терминал и запустите:
env --chdir=frontend nix develop -c yarn dev
Вы можете указать в своем браузере http://localhost:3000
и начать разработку. Любые изменения в исходных файлах ( ./frontend/src
) вызовут горячую перезагрузку приложения.
main
ветке запускается действие GitHub.yarn prod
../dist
) затем развертывается в Netlify.Чтобы добавить свои собственные хлопья в индекс поиска, отредактируйте ./flakes/manual.toml.
Возможные типы: github
, gitlab
, sourcehut
и git
(который является резервным вариантом для любого типа репозитория git, но на данный момент требует установки ключа версии вручную).
Чтобы проверить, совместим ли ваш флейк с nix flake-info, вы можете попробовать запустить против него flake-info
.
$ nix run github:nixos/nixos-search#flake-info -- flake <your flake handle>