
DEECE Search เป็นกลไกการค้นหาแบบเปิดทำงานร่วมกันและกระจายอำนาจสำหรับ IPFS โหนดใด ๆ ที่เรียกใช้ไคลเอนต์สามารถรวบรวมข้อมูลเนื้อหาบน IPFs และเพิ่มสิ่งนี้ลงในดัชนีซึ่งจะถูกเก็บไว้ในลักษณะการกระจายอำนาจใน IPFS สิ่งนี้ช่วยให้การค้นหาแบบกระจายอำนาจเกี่ยวกับเนื้อหาการกระจายอำนาจ
การดำเนินการในปัจจุบันยังคงเป็นทดลองอย่างมาก เรากำลังทำงานกับเวอร์ชันในอนาคตโดยไม่มีเกตเวย์กลางและกำลังสำรวจกลไกการค้นหาทางเลือก เซิร์ฟเวอร์ปัจจุบันของเราหยุดทำงานและโครงการยังไม่ได้รับการดูแล
ClientGatewayLibraryการค้นหา DEECE ช่วยให้สามารถค้นหาการกระจายอำนาจบนข้อมูล IPFS สิ่งนี้สามารถทำได้โดยเครือข่ายของโหนด IPFS ที่มีส่วนร่วมในการรวบรวมข้อมูลและการจัดทำดัชนีข้อมูลบนเครือข่าย ดัชนีจะถูกเก็บไว้ใน IPFS และแบ่งออกเป็นลำดับชั้นสองชั้นแรกคือ ดัชนีระดับสูงสุด (TLI) และที่สองเป็น ดัชนีเฉพาะคำหลัก (KSI) TLI มีตัวระบุ (CID) สำหรับ KSI สำหรับแต่ละคำหลักและได้รับการปรับปรุงอย่างต่อเนื่องเมื่อโหนดส่งการรวบรวมข้อมูล เมื่อคลานโหนดจะเพิ่มรายการ KSI ปัจจุบันของตัวระบุไฟล์ที่มีคำหลักนั้น

การค้นหา DEECE อนุญาตให้มีการดำเนินการเฉพาะสองอย่าง: search และ crawl ค้นหาข้อความล่าสุด TLI เพื่อค้นหา KSI สำหรับแต่ละคำหลักในแบบสอบถามผู้ใช้จากนั้นดึงข้อมูลผลลัพธ์จากสิ่งเหล่านี้ซึ่งจะแสดงต่อผู้ใช้ การจัดอันดับผลลัพธ์ในปัจจุบันได้รับคำสั่งตาม CID แต่ควรพัฒนากลไกที่ซับซ้อนมากขึ้น เราอนุญาตให้รวมผลลัพธ์ได้มากถึงสองคำหลักซึ่งจะขยายออกไปในอนาคต
ขณะนี้มีสามวิธีในการเข้าถึงการค้นหา DEECE ก่อนอื่นมีซอฟต์แวร์ไคลเอนต์ที่ใช้อินเทอร์เฟซบรรทัดคำสั่ง ประการที่สองเราได้ใช้บริการเกตเวย์ (www.deece.nl/web/) ซึ่งเรียกใช้อินสแตนซ์ของโหนดไคลเอนต์ของเราและอนุญาตให้ "ไคลเอนต์แสง" โต้ตอบกับการค้นหาโดยไม่ต้องติดตั้งซอฟต์แวร์อื่น ในที่สุดเราได้เปิดตัวรหัสของเราที่ใช้โดย CLI และเกตเวย์ในรูปแบบของห้องสมุด GO
การค้นหา DEECE เวอร์ชันเริ่มต้นขึ้นอยู่กับโหนดที่เชื่อถือได้ (โหนดเดียวกับเกตเวย์ของเรา) เพื่ออัปเดตระเบียน IPNS ที่ชี้ไปที่ TLI เวอร์ชันล่าสุด เมื่อลูกค้าคลานขั้นตอนสุดท้ายเกี่ยวข้องกับการส่งคำขออัปเดตไปยังเซิร์ฟเวอร์นี้ ในขณะนี้ลูกค้าจะต้องระบุรหัสผ่านในไฟล์กำหนดค่าซึ่งสามารถรับได้จากผู้ดูแลเนื่องจากมาตรการความปลอดภัยจะดำเนินการในภายหลัง
ปัจจุบันผู้ใช้เว็บมีทางเลือกเล็กน้อยสำหรับเครื่องมือค้นหา ส่วนกลาง เครื่องยนต์เหล่านี้ยังคงควบคุมนโยบายและความไว้วางใจจากส่วนกลางซึ่งอาจนำไปสู่ปัญหาในการเซ็นเซอร์การคุ้มครองความเป็นส่วนตัวและความโปร่งใส
นอกจากนี้เครื่องยนต์เหล่านี้มักจะมุ่งเน้นความพยายามของพวกเขาในเนื้อหาเว็บแบบดั้งเดิม (โฮสต์ที่เว็บเซิร์ฟเวอร์เข้าถึงผ่าน DNS) อย่างไรก็ตามในกระบวนทัศน์ Web3 ที่คาดว่าเนื้อหาจะถูกเก็บไว้ในเครือข่ายการจัดเก็บข้อมูลแบบกระจายอำนาจ (เช่น IPFs) และการแก้ไขชื่อที่จะเกิดขึ้นผ่านทางโซลูชัน blockchain (เช่น ENS) จำเป็นต้องใช้เครื่องมือค้นหาทางเลือก
ในระยะสั้นจำเป็นต้องใช้กลไกการค้นหาซึ่งการค้นหาข้อมูลการกระจายอำนาจและทำเช่นนั้นในลักษณะการกระจายอำนาจ
มีหลายโครงการที่เทียบเคียงได้ซึ่งพยายามแก้ปัญหาการรวมศูนย์ในการค้นหาเว็บ ก่อนอื่นมีการใช้งานและข้อเสนอจากการวิจัยสำหรับกลไกการค้นหาแบบกระจาย / กระจายอำนาจสำหรับข้อมูลเว็บปัจจุบัน โครงการต้นรวมถึง Yacy, Faroo และแสวงหา เมื่อเร็ว ๆ นี้ Presearch มีจุดมุ่งหมายเพื่อสร้างเครื่องมือค้นหาร่วมกันโดยใช้รางวัล Blockchain Rewards สำหรับแรงจูงใจ
ในทำนองเดียวกันงานจำนวนมากที่มีวัตถุประสงค์เพื่อให้การค้นหาแบบกระจายสำหรับเครือข่ายการจัดเก็บ P2P เมื่อเร็ว ๆ นี้กราฟได้สร้างโปรโตคอลการจัดทำดัชนีแบบกระจายอำนาจสำหรับข้อมูล blockchain โดยใช้แรงจูงใจ cryptocurrency
อย่างไรก็ตามไม่มีโครงการใด ๆ ข้างต้นรวบรวมกรณีการใช้งานเฉพาะของการค้นหาแบบกระจายอำนาจสำหรับข้อมูล Web3 แบบกระจายอำนาจ
สถาปัตยกรรมของเราขึ้นอยู่กับโหนดไคลเอนต์จำนวนหนึ่งซึ่งรักษาและเพิ่มเข้าไปในดัชนีรวมกันและสามารถทำการค้นหาได้ เราได้ใช้วิธีการเสร็จสิ้นการทำงานของสถาปัตยกรรมของเราก่อนและเพิ่มคุณสมบัติเพิ่มขึ้น ดังนั้นเวอร์ชันปัจจุบันของเราอาศัยโหนดที่เชื่อถือได้ (เกตเวย์) เพื่ออัปเดตเร็กคอร์ด TLI IPNS เนื่องจากไม่มีการเพิ่มความปลอดภัยหรือการสร้างแรงจูงใจเราจึงใช้รหัสผ่านง่าย ๆ เพื่อให้โหนดไคลเอนต์ใหม่เพิ่มลงในดัชนี ในขณะที่ความปลอดภัยอาจไม่เพียงพอในอนาคตเราถือว่าเป็นแบบจำลองที่เห็นแก่ผู้อื่นสำหรับการเปิดตัวระยะแรกของเรา
ในอนาคตเราคาดว่าจะมีการเพิ่มความปลอดภัยและสิ่งจูงใจในสถานที่ซึ่งจัดตำแหน่งโหนดให้ซื่อสัตย์เมื่ออัปเดตดัชนี สิ่งเหล่านี้อาจอยู่ในรูปแบบของรางวัล cryptocurreny, การลดลง, ชื่อเสียง, ฯลฯ วิธีหนึ่งในการให้รางวัลแก่รางวัลแก่โหนดที่ซื่อสัตย์อาจเป็นโดยการรวมโฆษณาเข้ากับโปรโตคอลและอนุญาตให้มีการมอบหมายค่าธรรมเนียมการโฆษณาให้กับโหนดที่ดูแลเครือข่าย
เวอร์ชันปัจจุบันของเรารองรับไฟล์ PDF บน IPFs ที่จะเพิ่มลงในดัชนีเท่านั้น ในอนาคตเราต้องการขยายสิ่งนี้ไปยังประเภทไฟล์และไดเรกทอรีเพิ่มเติมและรองรับเครือข่ายการจัดเก็บข้อมูลที่กระจายอำนาจที่แตกต่างกัน ในที่สุดเรามุ่งมั่นที่จะรวมข้อมูลที่ใช้ blockchain เช่นสัญญาอัจฉริยะในการค้นหา
ตอนนี้เรานำเสนอภาพรวมของการดำเนินการหลักสองประการในกลไกของเรา
การค้นหาเริ่มต้นด้วยการสืบค้นโดยไคลเอนต์ที่มีจำนวนคำค้นหา จากนั้นไคลเอนต์จะดึงข้อมูล TLI ล่าสุดโดยการแก้ไขชื่อ IPNS ที่กำหนดโดยเกตเวย์ไปยัง CID ที่เกี่ยวข้อง TLI นี้จะถูกดึงและสำรวจเพื่อตรวจสอบว่าคำหลักมี KSI หรือไม่ หากเป็นกรณีนี้ KSI ที่เกี่ยวข้องคือการสืบค้นเพื่อส่งคืนเนื้อหาที่มีคำหลัก จากนั้นไคลเอนต์สามารถดึงไฟล์เหล่านี้จากเครือข่าย

สิ่งสำคัญอย่างหนึ่งในเครื่องมือค้นหาคือกลไกการจัดอันดับ สิ่งนี้เกิดขึ้นโดยทั่วไปในลักษณะส่วนกลางโดยไม่มีอิทธิพลมากจากลูกค้า ในขณะที่เรายังไม่ได้ใช้กลไกการจัดอันดับที่ซับซ้อน แต่เราจินตนาการว่าจะได้รับการจัดอันดับที่ลูกค้าของผลลัพธ์ซึ่งทำให้พวกเขามีพลังและความโปร่งใสมากขึ้น สิ่งนี้ช่วยให้ลูกค้าสามารถควบคุมฟังก์ชั่นการจัดอันดับและปรับแต่งสิ่งเหล่านี้ตามความต้องการเฉพาะ ในปัจจุบันกลไกของเราส่งคืนผลลัพธ์ที่สั่งซื้อตาม CID เมื่อป้อนคำค้นหาสองคำหน้าที่ทั้งคู่เกิดขึ้นจะถูกส่งคืนก่อนหลังจากนั้นหน้าจะถูกส่งคืนซึ่งมีเพียงหนึ่งคำเท่านั้น
สิ่งสำคัญของเครื่องมือค้นหาใด ๆ คือการเพิ่มรายการไปยังดัชนี กระบวนการนี้เกี่ยวข้องกับหลายขั้นตอนซึ่งเราอธิบายด้านล่าง
การตัดสินใจครั้งแรกที่จะทำคือเนื้อหาที่จะเพิ่มลงในดัชนีซึ่งเราเรียกว่า การดูแล ในเครื่องยนต์แบบดั้งเดิมนี้รวมถึงเนื้อหาเว็บสาธารณะทั้งหมด แม้ว่าสิ่งนี้จะได้รับประสิทธิภาพสูง แต่ก็อาจเพิ่มค่าใช้จ่ายได้มากเกินไปเมื่อดำเนินการในเครือข่ายการกระจายอำนาจ อีกวิธีหนึ่งอาจเป็นการดูแลตามฉันทามติเครือข่ายของเนื้อหาที่สำคัญ สำหรับระบบปัจจุบันของเราเราอนุญาตให้ทุกคนที่เชื่อว่าเนื้อหามีความสำคัญในการเพิ่มสิ่งนี้ลงในเครือข่าย เนื้อหาสามารถแก้ไขได้โดย CID, DNSLINK, ENS หรือ IPNS ตัวระบุ
ถัดไปการคลานเกิดขึ้นซึ่งเกี่ยวข้องกับการดึงและวิเคราะห์ไฟล์เพื่อแยกคำหลักที่สำคัญ ดังที่ได้กล่าวไว้ข้างต้นระบบของเราคลานเมื่อมีคนตัดสินใจว่าควรเพิ่มเนื้อหาและส่ง CID ด้วยตนเองเพื่อรวบรวมข้อมูล ในอนาคตเราจินตนาการว่าสิ่งนี้จะเกิดขึ้นโดยอัตโนมัติเมื่อมีการอัปโหลดเนื้อหาหรือเข้าชมบนเครือข่าย นอกเหนือจากการแยกคำหลักแล้วอาจมีการเพิ่มข้อมูลเมตาอื่น ๆ ขณะนี้เราใช้ประเภทไฟล์ (PDF) และการประทับเวลาเมื่อทำการรวบรวมข้อมูล แต่ในอนาคตเจตนาที่จะเพิ่มชื่อนับขนาด ฯลฯ

หลังจากแยกคำหลัก (และผลิต RWI) ดัชนีจะต้องจัดเก็บ สำหรับการจัดเก็บข้อมูลเราใช้ IPFS เนื่องจากจะช่วยให้การจัดเก็บข้อมูลร่วมกันกระจายอำนาจ เราตัดสินใจที่จะรักษาลำดับชั้นสองระดับ แต่ละคำหลักจะมีไฟล์ดัชนีที่เกี่ยวข้อง (KSI) ซึ่งโหนดสามารถค้นหาเนื้อหาที่มีคำหลักเหล่านั้น ดัชนีแยกต่างหากจะถูกเก็บไว้ (TLI) เพื่อชี้ไปที่ตัวระบุของ KSI และนี่คือการเผยแพร่ไปยังชื่อ IPNS จากเซิร์ฟเวอร์เกตเวย์ของเรา เมื่อโหนดอัปเดต KSI หลังจากรวบรวมข้อมูลไฟล์พวกเขาจะอัปเดตตัวชี้ใน TLI เป็นไฟล์เหล่านี้และขอให้เกตเวย์อัปเดตตัวชี้ที่บันทึก IPNS จะแก้ไข วิธีนี้บันทึก IPNS ชี้ไปที่ TLI เวอร์ชันล่าสุดซึ่งจะชี้ไปที่ KSI เวอร์ชันล่าสุด
ในปัจจุบันโหนดลูกค้าสามารถเปลี่ยน TLI ได้หากพวกเขามีรหัสผ่านซึ่งสามารถรับได้จากผู้ดูแลโครงการนี้ ด้วยวิธีนี้รายการที่เป็นอันตรายมีโอกาสน้อยกว่า โหนดที่มีรหัสผ่านสามารถถูกมองว่าเป็น 'เจ้าหน้าที่' ในเครือข่าย
ในระหว่างการพัฒนาและการทดสอบเราได้ทำการสังเกตจำนวนมากเกี่ยวกับประสิทธิภาพ ในฐานะที่เป็นโซลูชันของเราอาศัย IPFS อย่างมากประสิทธิภาพของเราก็เช่นกัน เราพบว่าความล่าช้าอย่างมีนัยสำคัญอาจเกิดขึ้นเมื่อโหนดไม่ได้เพิ่มเพียร์เกตเวย์ในฝูงของพวกเขา ในขณะที่เราได้เพิ่มสิ่งนี้ลงใน CLI ของเราการเชื่อมต่อยังคงลดลงเป็นครั้งคราว แม้ว่าสิ่งนี้จะไม่ทำลายระบบ แต่ก็เพิ่มความล่าช้า
นอกจากนี้การอัปเดตรายการ IPNS ของเราจากเกตเวย์อาจช้ามากและอาจกลายเป็นคอขวดของประสิทธิภาพเมื่อการจราจรเพิ่มขึ้น เราได้เริ่มมองหาทางเลือกอื่น แต่ปล่อยให้การดำเนินการเพื่อเผยแพร่ในอนาคต ตัวเลือกหนึ่งคือการใช้ DNS เพื่อจัดเก็บตัวชี้ไปยังเร็กคอร์ด TLI ล่าสุด แต่สิ่งนี้นำความท้าทายเพิ่มเติมจำนวนมากที่มีอยู่ใน DNS อาจใช้รีจิสทรีชื่อที่ใช้ blockchain เช่น ENS แม้ว่าจะมีการอัปเดตบ่อยครั้งในสัญญา Resolver อาจกลายเป็นค่าใช้จ่ายขนาดใหญ่
มีหลายวิธีในการเข้าถึงการค้นหา DEECE:
Clientซอฟต์แวร์ไคลเอนต์สามารถใช้งานได้โดยโหนดใด ๆ ที่ใช้ IPFs และให้อินเทอร์เฟซบรรทัดคำสั่งง่ายๆ
NAME:
Deece - Decentralised search for IPFS
USAGE:
Deece [global options] command [command options] [arguments...]
VERSION:
0.0.1
AUTHORS:
Navin V. Keizer < [email protected] >
Puneet K. Bindlish < [email protected] >
COMMANDS:
search Performs a decentralised search on IPFS
crawl Crawls a page to add to the decentralised index
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help (default: false)
--version, -v print the version (default: false)
Gatewayเพื่อการเข้าถึงที่ง่ายและมีน้ำหนักเบาเราได้ใช้เกตเวย์สำหรับลูกค้าค้นหาของเรา สามารถดูได้ที่: www.deece.nl/web/ และอนุญาตให้ค้นหาและรวบรวมข้อมูลบนเครือข่ายตามตัวระบุ (CID's)

หมายเหตุ: เกตเวย์ขณะนี้ Susspended ขณะอัพเกรดเป็นเวอร์ชัน 2
Libraryทั้ง CLI และ Gateway Run โดยใช้แพ็คเกจการค้นหา DEECE ของเราสำหรับ GO เราได้เปิดตัวสิ่งนี้เนื่องจากสามารถใช้สำหรับการรวมและส่วนขยายที่ง่าย
คำแนะนำการติดตั้งเพิ่มเติมจะถูกเพิ่มเมื่อทดสอบผ่านแพลตฟอร์มที่แตกต่างกัน สำหรับตอนนี้เราได้ให้คำแนะนำตามการติดตั้งของเราบน Linux
สำหรับการค้นหา DEECE เพื่อทำงานมีข้อกำหนดและการพึ่งพาจำนวนมาก ในการทำงานเป็นไคลเอนต์ Daemon IPFS ในท้องถิ่นจะต้องทำงานและเพื่อเพิ่มความเร็วในการเพิ่มผลลัพธ์จะช่วยเพิ่มเกตเวย์ที่รักษา TLI ไว้ในฝูงเพียร์ ในการส่งการเปลี่ยนแปลงไปยัง TLI เป็นลูกค้าต้องใช้รหัสผ่าน ในที่สุดไฟล์กำหนดค่าจะต้องมีอยู่ในไดเรกทอรีเดียวกับที่เรียกใช้งานเพื่อโหลดผลลัพธ์ ไฟล์กำหนดค่าที่ไม่สมบูรณ์สามารถพบได้ในที่เก็บนี้
ในการเรียกใช้ไคลเอนต์ IPFS แรก, GO (ทดสอบสำหรับเวอร์ชัน 1.13.7 รุ่นใหม่ควรทำงานกับการดัดแปลงเล็กน้อย) และต้องติดตั้ง GIT
ต่อไปเราต้องติดตั้งจากแหล่งที่มา:
git clone github.com/navinkeizer/Deecetesseract-coRTE ต่อไปจะต้องติดตั้งรวมถึงการพึ่งพาอื่น ๆ สำหรับ Linux สิ่งนี้อาจมีลักษณะเช่นนี้:
sudo apt-get install g++
sudo apt-get install autoconf automake libtool
sudo apt-get install autoconf-archive
sudo apt-get install pkg-config
sudo apt-get install libpng-dev
sudo apt-get install libjpeg8-dev
sudo apt-get install libtiff5-dev
sudo apt-get install zlib1g-dev
wget http://www.leptonica.org/source/leptonica-1.81.1.tar.gz
sudo tar xf leptonica-1.81.1.tar.gz
cd leptonica-1.81.1 &&
sudo ./configure &&
sudo apt install make
sudo make &&
sudo make install
sudo apt-get install tesseract-ocr # or sudo apt install tesseract-ocr
sudo apt install libtesseract-devสามารถติดตั้งแพ็คเกจ GO อื่น ๆ ที่เกี่ยวข้องได้:
$ go get -t github.com/otiai10/gosseract
$ go get github.com/navinkeizer/Deece
$ go get github.com/ipfs/go-ipfs-api
$ go get github.com/wealdtech/go-ens/v3
$ go get github.com/otiai10/gosseract/v2
และ CLI สร้างขึ้น:
$ sudo go build Deece/CLI/.
และวิ่ง:
$ ./CLI [command] [arguments]
แพ็คเกจยังสามารถใช้เป็นไลบรารี
go get github.com/navinkeizer/Deece
การใช้งานการค้นหา DEECE ในปัจจุบันยังคงทดลองอยู่และดังนั้นจึงอาจประสบความไม่แน่นอน ตามที่อธิบายไว้ในเอกสารนี้เราได้ทำให้สมมติฐานง่ายขึ้น (เห็นแก่ผู้อื่น) และมุ่งเน้นไปที่การทำงานที่ จำกัด (PDF เท่านั้น) นอกจากนี้เกตเวย์ยังนำเสนอด้านส่วนกลางซึ่งในอนาคตควรถูกแทนที่ด้วยฉันทามติเครือข่ายกระจายอำนาจและโปรโตคอลควรได้รับการรักษาความปลอดภัยโดยสิ่งจูงใจ
การดำเนินการของเราใช้วิธีหลักการแรก เรามีเป้าหมายที่จะสร้างจากพื้นดินแทนที่จะพึ่งพาวิธีการและวิธีแก้ปัญหาที่มีอยู่สำหรับส่วนประกอบของระบบ เราเชื่อว่านี่เป็นสิ่งจำเป็นเนื่องจากโซลูชันที่มีอยู่อาจไม่เหมาะสมสำหรับเนื้อหา Web3 แบบกระจายอำนาจ กล่าวอีกนัยหนึ่งมีงานมากมายที่ต้องทำ
ขณะนี้บางครั้งเราประสบปัญหาในกระบวนการคลานเนื่องจากการอัปเดต IPNS เวลาออกไป เรากำลังดำเนินการแก้ไขปัญหานี้ด้วยโซลูชันทางเลือก