การใช้เครื่องมือค้นหาอย่างง่าย
วัตถุประสงค์ในการศึกษา ส่วนใหญ่เพื่อทำความเข้าใจรายละเอียดการใช้งานของเครื่องมือค้นหา ข้อดีข้อเสียของประสิทธิภาพ และโครงสร้าง
แนวคิดคือการสร้างแอปพลิเคชัน isomorphic จาก UI ไปยังระบบฐานข้อมูล
แอปพลิเคชันสามารถใช้งานได้โดยใช้นักเทียบท่าหรือไบนารีที่เผยแพร่ใน GitHub
./searchzin -c <path-to-config>.yml
หลังจากนั้นคุณสามารถดู http://localhost:8080
เพื่อดูหน้าการค้นหา
การกำหนดค่าสามารถทำได้โดยไฟล์การกำหนดค่าที่อยู่ใน /etc/searchzin/config.yml
หรือระบุคีย์การกำหนดค่าในรูปแบบ -C key=value
รูปแบบที่สองจะแทนที่รูปแบบแรก
ค่าเริ่มต้นของการกำหนดค่า:
port : 8080 # Service port
path :
log : /var/log/searchzin # Log directory
data : /var/lib/searchzin # Data directory
โครงสร้างโปรเจ็กต์ทั้งหมดสร้างขึ้นใน golang โดยใช้เฟรมเวิร์ก gin
การพึ่งพาได้รับการจัดการโดยใช้ dep
Toolchain ของโปรเจ็กต์ส่วนใหญ่ได้รับการจัดการโดย Makefile
เป้าหมายที่สำคัญคือ:
install
: ติดตั้งการพึ่งพาที่จำเป็นและ git hooksreadme
: ดำเนินการรวมไฟล์ README.md
lint
: ทำการขลิบและจัดรูปแบบของโค้ดtest
: คอมไพล์และรันการทดสอบหน่วยbuild
: สร้างโฟลเดอร์ที่สามารถแจกจ่ายได้ linux
ใน dist
run
: รันโค้ดโดยใช้ go run
run-dev
: สร้างและรันคอนเทนเนอร์นักเทียบท่าrelease
: สร้างอิมเมจ docker releasepublish
: เผยแพร่อิมเมจนักเทียบท่าบน dockerhub โดยใช้เนื้อหาของไฟล์ VERSION
เป็นเวอร์ชันpublish-latest
: เผยแพร่อิมเมจนักเทียบท่าบน dockerhub ด้วยแท็ก latest
watch
: ดำเนินการ lint
และ test
การแก้ไขไฟล์func-test
: ทำการทดสอบการทำงานภายในโฟลเดอร์ features
เครื่องมือค้นหานี้มีองค์ประกอบหลัก 6 ส่วน:
แต่ละองค์ประกอบมีความรับผิดชอบที่ชัดเจนในระบบ และองค์ประกอบทั้งหมดทำงานร่วมกันเพื่อตอบสนองต่อข้อซักถามและคำขอจัดทำดัชนีเอกสาร
มีหน้าที่จัดเก็บและมอบรหัสให้กับเอกสารที่สร้างขึ้นใหม่ ข้อจำกัดคือ:
id
id
โดยไม่ขัดแย้งกันเพื่อความคงอยู่ssd
หรือ hdd
เก็บดัชนีย้อนกลับของ "คำศัพท์" และเอกสาร
terms
เพื่อจัดทำเอกสารความสัมพันธ์key
สำหรับข้อความค้นหาที่มีการประมาณคำหลักเมื่อได้รับเอกสารใหม่จะเข้าใจและบันทึกทั้งในฐานข้อมูลดัชนีและฐานข้อมูลเอกสาร
แยกวิเคราะห์อินพุตของผู้ใช้และแปลงเป็นแผนการสืบค้นโดยใช้โครงสร้างข้อมูลแบบต้นไม้
lucene
'sด้วยแผนผังแบบสอบถาม ให้ปรับให้เหมาะสมโดยคำนึงถึงข้อจำกัดและสภาพแวดล้อมที่จะดำเนินการ
หลังจากมีแผนที่มีโครงสร้างแล้วแบบสอบถามจะดึงข้อมูลที่มีประสิทธิภาพจากฐานข้อมูล index
ผู้ดำเนินการจะดำเนินการขั้นตอนนี้
ภาษาคิวรีนี้มีพื้นฐานมาจาก Lucene's เป็นหลัก เพื่อลดความซับซ้อนของการออกแบบและทำความเข้าใจถึงข้อดีข้อเสียที่เกิดขึ้น
สถานการณ์การทดสอบปัจจุบันที่จะใช้คือการจัดทำดัชนีพอดแคสต์ตามชื่อ เนื้อหา และแท็ก
การใช้งานพื้นฐานสามารถพบได้ใน searchzin-example
searchzin มีให้บริการภายใต้ใบอนุญาต MIT