Hound เป็นเครื่องมือค้นหาซอร์สโค้ดที่รวดเร็วมาก แกนกลางขึ้นอยู่กับบทความนี้ (และรหัส) จาก Russ Cox: การจับคู่นิพจน์ทั่วไปกับดัชนี trigram Hound เองเป็นส่วนหนึ่งของการตอบสนองแบบคงที่ที่พูดถึงแบ็กเอนด์ Go แบ็กเอนด์เก็บดัชนีที่ทันสมัยสำหรับแต่ละที่เก็บและคำตอบจะค้นหาผ่าน API ขั้นต่ำ นี่คือการดำเนินการ:

ติดตั้งไป (เวอร์ชันขั้นต่ำที่ต้องการ: 1.16) และ NPM
โคลนที่เก็บและเรียกใช้
git clone https://github.com/hound-search/hound.git
cd hound
make
ไบนารีที่ได้ ( hound , houndd ) สามารถพบได้ใน. build/ bin/ directory
{
"dbpath" : " db " ,
"repos" : {
"Hound" : {
"url" : " https://github.com/hound-search/hound.git " ,
"vcs-config" : {
"ref" : " main "
}
}
}
}รายการที่สมบูรณ์ของตัวเลือกการกำหนดค่าที่มีอยู่สามารถดูได้ที่นี่
houndd ในไดเรกทอรีเดียวกับ config.json ของคุณ คุณควรเห็นผลลัพธ์ที่คล้ายกับ: 2015/03/13 09:07:42 Searcher started for statsd
2015/03/13 09:07:42 Searcher started for Hound
2015/03/13 09:07:42 All indexes built!
2015/03/13 09:07:42 running server at http://localhost:6080
ติดตั้ง Docker หากคุณไม่มี เราต้องการอย่างน้อย Docker >= 1.14
สร้างไฟล์ config.json และใช้เพื่อแสดงรายการที่เก็บของคุณ ตรวจสอบตัวอย่างของเรา config.json เพื่อดูวิธีการตั้งค่าที่เก็บประเภทต่างๆ ตัวอย่างเช่นเราสามารถกำหนดค่า Hound เพื่อค้นหาซอร์สโค้ดของตัวเองโดยใช้การกำหนดค่าที่พบใน default-config.json
docker run -d -p 6080:6080 --name hound -v $(pwd):/data ghcr.io/hound-search/hound:latest
คุณควรจะสามารถไปที่ http: // localhost: 6080/ตามปกติ
git clone https://github.com/hound-search/hound.git
cd hound
docker build . --tag=hound
docker create -p 6080:6080 --name hound -v $(pwd):/data hound
docker start hound
docker stop hound
ไม่มีธงพิเศษที่จะวิ่งในการผลิต คุณสามารถใช้ --addr=:6880 FLAG เพื่อควบคุมพอร์ตที่เซิร์ฟเวอร์เชื่อมโยง ปัจจุบัน Hound ไม่รองรับ TLS เนื่องจากผู้ใช้ส่วนใหญ่ใช้ Hound หลัง Apache หรือ Nginx อย่างไรก็ตามเราเปิดรับการสนับสนุนเพื่อเพิ่มการสนับสนุน TLS
เราเคยใช้เครื่องมือที่คล้ายกันมากมายในอดีตและส่วนใหญ่ของพวกเขานั้นช้าเกินไปยากเกินไปที่จะกำหนดค่าหรือต้องการซอฟต์แวร์มากเกินไปที่จะติดตั้ง ซึ่งนำเราไปสู่ ...
ใช่แล้ว คุณสามารถร้องขอพร็อกซีไปยังบริการ GO ผ่าน Apache/Nginx/ฯลฯ แต่ไม่จำเป็น
ปัจจุบัน Hound ได้รับการทดสอบเฉพาะใน MacOS และ CentOS เท่านั้น แต่ควรใช้งานกับระบบ *NIX ใด ๆ Hound on Windows ไม่ได้รับการสนับสนุน แต่เราได้ยินมาว่ามันรวบรวมและทำงานได้ดี (แม้ว่ามันจะช่วยยกเว้นโฟลเดอร์ข้อมูลของคุณจาก Windows Search Indexer)
Hound รองรับระบบควบคุมเวอร์ชันต่อไปนี้:
"vcs" : "hg" ในการกำหนดค่า"vcs" : "svn" ในการกำหนดค่า"vcs" : "bzr" ในการกำหนดค่า"vcs" : "local" ในการกำหนดค่าดู config-example.json สำหรับตัวอย่างวิธีการใช้ VC แต่ละตัว
มีสองสามวิธีในการจัดทำดัชนีที่เก็บส่วนตัว:
local สิ่งนี้ช่วยให้คุณสามารถจัดทำดัชนีไดเรกทอรีท้องถิ่น คุณสามารถตั้งค่า "watch-changes" : true เพื่อคำนวณแฮชแบบเรียกซ้ำของไฟล์ทั้งหมดในไดเรกทอรีและดัชนีใหม่โดยอัตโนมัติfile:// โปรโตคอล สิ่งนี้ช่วยให้คุณสามารถจัดทำดัชนีโคลนท้องถิ่นของที่เก็บ ข้อเสียที่นี่คือการสำรวจเพื่อให้ repo ทันสมัยอยู่เสมอจะไม่ทำงาน (สิ่งนี้ไม่ทำงานในโฟลเดอร์ท้องถิ่นที่ไม่ได้เป็นประเภทที่เก็บที่รองรับ) หากคุณใช้ Docker คุณต้องติดตั้งระดับเสียงไปยังที่เก็บของคุณ (เช่น -v $(pwd)/src:/src ) และใช้เส้นทางสัมพัทธ์กับ repo ในการกำหนดค่าของคุณ"url" : "[email protected]:foo/bar.git" ตราบใดที่คุณตั้งค่าคีย์ SSH ของคุณบนกล่องที่ Hound ทำงานนี้จะใช้งานได้ โดยค่าเริ่มต้น Hound สำรวจ URL ในการกำหนดค่าสำหรับการอัปเดตทุก ๆ 30 วินาที คุณสามารถแทนที่ค่านี้ได้โดยการตั้งค่าคีย์ ms-between-poll บนพื้นฐานต่อ repo ในการกำหนดค่า หากคุณกำลังจัดทำดัชนีที่เก็บข้อมูลจำนวนมากคุณอาจสนใจที่จะปรับแต่งคุณสมบัติ max-concurrent-indexers คุณสามารถดูว่างานเหล่านี้ในการกำหนดค่าตัวอย่างอย่างไร
ปัจจุบันบรรณาธิการต่อไปนี้มีปลั๊กอินที่รองรับ Hound:
git clone https://github.com/hound-search/hound.git
cd hound
make
Hound Executables จะมีอยู่ใน .build/bin
มีการทดสอบจำนวนมากขึ้นในแต่ละแพ็คเกจใน Hound โปรดตรวจสอบให้แน่ใจว่าผ่านไปก่อนที่จะอัปโหลดคำขอดึงของคุณ คุณสามารถเรียกใช้การทดสอบด้วยคำสั่งต่อไปนี้ ในการเรียกใช้ชุดทดสอบทั้งหมดให้ใช้:
make test
หากคุณต้องการเรียกใช้ชุดทดสอบ JavaScript ให้ใช้:
npm test
ไฟล์ GO ใด ๆ ที่สิ้นสุดใน _test.go จะถือว่าเป็นไฟล์ทดสอบ ในทำนองเดียวกันไฟล์ JavaScript ใด ๆ ที่ลงท้ายด้วย .test.js จะทำงานโดย JEST โดยอัตโนมัตินักวิ่งทดสอบของเรา การทดสอบควรอยู่ติดกับไฟล์ที่ครอบคลุม ตรวจสอบเอกสารของ Jest สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการเขียนการทดสอบ jest และตรวจสอบเอกสารการทดสอบของ Go สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการทดสอบรหัสไป
คุณต้องติดตั้ง Node.js >= 12 และติดตั้ง jest โดย npm install jest เพื่อเรียกใช้การทดสอบ JS
Hound มีเว็บ UI ที่ประกอบด้วยไฟล์หลายไฟล์ (HTML, CSS, JavaScript ฯลฯ ) เพื่อรวบรวม UI การเปลี่ยนแปลงการใช้งาน:
make ui
เพื่อให้การพัฒนาง่ายขึ้นมีการตั้งค่าสถานะที่จะอ่านไฟล์จากระบบไฟล์ (ช่วยให้รอบการแก้ไข/รีเฟรชเป็นที่ชื่นชอบ)
ก่อนอื่นคุณควรตรวจสอบให้แน่ใจว่าคุณติดตั้งการพึ่งพาทั้งหมดที่คุณต้องการโดยการรัน:
make dev
จากนั้นเรียกใช้เซิร์ฟเวอร์ Hound ด้วยตัวเลือก -Dev:
.build/bin/houndd --dev
สร้างขึ้นที่ Etsy โดย:
Hound ได้รับการดูแลโดย: