พื้นที่เก็บข้อมูลนี้มีสคริปต์และเว็บแอปพลิเคชันสำหรับ search.nixos.org
แนวคิดเริ่มต้นคือการแทนที่แพ็คเกจ NixOS และการค้นหาตัวเลือกที่ดึงไฟล์ JSON หนึ่งไฟล์ซึ่งมีแพ็คเกจทั้งหมด (หรือตัวเลือก) แนวทางนี้ดีสำหรับการตั้งค่าง่ายๆ แต่เริ่มแสดงปัญหาเมื่อหมายเลขแพ็กเกจเริ่มใหญ่ขึ้นเรื่อยๆ ฉันแน่ใจว่าเราสามารถเพิ่มประสิทธิภาพมันต่อไปได้ แต่ความคิดที่ว่าเราจะทำอะไรได้ทั้งหมดหากมีฐานข้อมูลอยู่ด้านหลังก็คือการไม่อยากลอง
สำหรับแบ็กเอนด์ เรากำลังใช้อินสแตนซ์ Elasticsearch ซึ่งได้รับการสนับสนุนโดย bonsai.io ที่ส่วนหน้าเราใช้ Elm
กรณีการใช้งานที่เราต้องการแก้ไขคือผู้เยี่ยมชมต้องการดูว่ามีแพ็คเกจอยู่หรือไม่หรือค้นหารายละเอียดของแพ็คเกจบางอย่าง
ผู้ใช้ต้องการรวมเป็นผลลัพธ์เดียวหากเป็นไปได้ ยิ่งมีการเพิ่มอักขระในคำค้นหามากเท่าไร การค้นหาก็จะแคบลง และเราควรแสดงผลลัพธ์น้อยลง
สิ่งที่สำคัญมากคือการจัดอันดับผลการค้นหาด้วย การดำเนินการนี้จะนำผลการค้นหาที่เกี่ยวข้องมากขึ้นไปไว้ด้านบน เนื่องจากหลายครั้งที่การสร้างคำค้นหาที่จะแสดงเพียงรายการผลลัพธ์เดียวเป็นเรื่องยาก
สำคัญน้อยกว่า แต่ให้ประสบการณ์ผู้ใช้ที่ดีกว่า เป็นคำแนะนำในการเขียนคำค้นหาที่ดีขึ้น คุณลักษณะการแนะนำควรแนะนำให้ผู้ใช้เขียนข้อความค้นหาที่ดีขึ้นซึ่งจะให้ผลลัพธ์ที่ดีขึ้น
หากต้องการเริ่มพัฒนาให้เปิดเทอร์มินัลแล้วรัน:
env --chdir=frontend nix develop -c yarn dev
คุณสามารถชี้เบราว์เซอร์ของคุณไปที่ http://localhost:3000
และเริ่มพัฒนา การเปลี่ยนแปลงใดๆ ในไฟล์ต้นฉบับ ( ./frontend/src
) จะทำให้เกิดการรีโหลดแอปพลิเคชันแบบ Hot Reload
main
GitHub Action จะถูกทริกเกอร์yarn prod
./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>