Este repositorio contiene los scripts y la aplicación web para search.nixos.org
.
La idea inicial era reemplazar los paquetes de NixOS y la búsqueda de opciones, que buscaba un archivo JSON que contenía todos los paquetes (u opciones). Este enfoque es bueno por su configuración simple, pero comenzó a mostrar sus problemas cuando el número de paquetes aumentaba cada vez más. Estoy seguro de que podríamos optimizarlo aún más, pero las ideas de qué podríamos hacer si hubiera alguna base de datos en la parte posterior eran demasiado tentadoras para no intentarlo.
Para el backend utilizamos la instancia de Elasticsearch, amablemente patrocinada por bonsai.io. En la interfaz estamos usando Elm.
El caso de uso que queremos resolver es que un visitante quiera ver si existe un paquete o buscar los detalles de cierto paquete.
Un usuario quiere converger a un único resultado si es posible. Cuantos más caracteres se agreguen a una consulta de búsqueda, más limitada será la búsqueda y deberíamos mostrar menos resultados.
También es muy importante la clasificación de los resultados de búsqueda. Esto traerá resultados de búsqueda más relevantes a la parte superior, ya que muchas veces es difícil generar una consulta de búsqueda que genere solo un elemento de resultado.
Una experiencia de usuario menos importante, pero que proporciona una mejor. son sugerencias para escribir mejores consultas de búsqueda. La función de sugerencia debería guiar al usuario a escribir mejores consultas que a su vez producirán mejores resultados.
Para comenzar a desarrollar abra una terminal y ejecute:
env --chdir=frontend nix develop -c yarn dev
Puede apuntar su navegador a http://localhost:3000
y comenzar a desarrollar. Cualquier cambio en los archivos fuente ( ./frontend/src
) activará una recarga en caliente de una aplicación.
main
se activa una acción de GitHub.yarn prod
../dist
) luego se implementa en Netlify.Para agregar sus propios copos al índice de búsqueda, edite ./flakes/manual.toml.
Los tipos posibles son github
, gitlab
, sourcehut
y git
(que es el recurso alternativo para cualquier tipo de repositorio de git, pero requiere establecer una clave de revisión manualmente a partir de ahora).
Para probar si su flake es compatible con nix flake-info, puede intentar ejecutar flake-info
en su contra.
$ nix run github:nixos/nixos-search#flake-info -- flake <your flake handle>