
Deece搜索是IPF的開放,協作和分散的搜索機制。運行客戶端的任何節點都可以在IPF上爬網,並將其添加到索引中,該索引本身以分散的方式存儲在IPF上。這允許在分散內容上分散搜索。
當前的實施仍然是高度實驗性的。我們正在開發未來的版本,而無需中央門戶,並正在探索替代性搜索機制。我們當前的服務器已關閉,並且該項目尚未維護。
ClientGatewayLibraryDeece搜索允許在IPFS數據上分散搜索。這是由IPFS節點網絡實現的,他們參與網絡上數據的爬網和索引。該索引存儲在IPF上,並分為兩層層次結構,第一個是頂級索引(TLI),第二個是關鍵字特定索引(KSI)。 TLI包含每個關鍵字的KSI標識符(CID),並且當節點提交爬網時會不斷更新。爬網時,節點添加到當前的KSI列表包含該關鍵字的文件的標識符列表。

Deece搜索允許兩個具體的操作: search和crawl 。搜索查詢最新的TLI,以在用戶查詢中找到每個關鍵字的KSI,然後從這些關鍵字中獲取這些結果,然後從這些關鍵字中獲取這些結果,這些結果將顯示給用戶。目前,基於CID排序結果的排名,但應開發更複雜的機制。我們允許最多兩個關鍵字的組合結果,這將來會擴展。
當前有三種訪問Deece搜索的方法。首先,有使用命令行接口的客戶端軟件。其次,我們實施了網關服務(www.deece.nl/web/),該服務運行了我們的客戶端節點的實例,並允許“ Light客戶端”與搜索交互而無需安裝其他軟件。最後,我們以GO庫的形式發布了CLI和Gateway使用的代碼。
Deece搜索的初始版本依賴於一個受信任的節點(與我們的網關相同的節點)來更新指向TLI最新版本的IPNS記錄。當客戶端抓取時,最後一步涉及他們向該服務器發送更新請求。目前,客戶將需要在其配置文件中指定一個密碼,該密碼可以從維護人員那裡獲得,因為稍後將實施安全措施。
當前,Web用戶幾乎沒有集中搜索引擎的替代方案。這些引擎保持集中控制,政策和信任,這可能導致審查制度,隱私保護和透明度的問題。
此外,這些引擎通常將精力集中在傳統的Web內容上(通過DNS訪問了Web服務器)。但是,在Web3範式中,預計內容將存儲在分散的存儲網絡(例如IPF)和通過區塊鏈解決方案(例如ENS)進行的名稱分辨率,需要替代搜索引擎。
簡而言之,需要搜索機制,以搜索分散數據,並以分散的方式進行。
有許多可比的項目,這些項目試圖解決Web搜索中的集中化問題。首先,研究了有關當前Web數據的分佈式 /分散搜索機制的研究和建議。早期項目包括Yacy,Faroo和尋求者。最近,Presearch旨在使用區塊鏈獎勵來創建協作搜索引擎以獲得激勵措施。
同樣,許多作品旨在為P2P存儲網絡提供分佈式搜索。最近,該圖已使用加密貨幣激勵措施為區塊鏈數據構建了一個分散的索引協議。
但是,以上項目都沒有完全捕獲我們的特定用例,以分散搜索分散的Web3數據。
我們的架構依賴於許多客戶端節點,這些節點共同維護和添加到索引中,並且能夠執行搜索。我們採取了首先完成架構的工作原型的方法,並逐步添加功能。因此,我們當前的版本依靠一個受信任的節點(網關)來更新TLI IPNS記錄。由於沒有實施添加的安全性或激勵性,因此我們使用了一個簡單的密碼來允許新的客戶端節點添加到索引中。儘管將來的安全性可能不足,但我們為早期版本假設一個利他模型。
將來,我們設想有添加的安全性和激勵措施,在更新索引時說實話,它們會使節點保持一致。這些可能是加密富國獎勵,削減,聲譽等的形式。為誠實節點提供資金的一種方法可能是將廣告納入協議中並允許將廣告費納入維護網絡的節點。
我們當前的版本僅支持IPF上的PDF文件,以添加到索引中。將來,我們希望將其擴展到更多的文件類型和目錄,並支持不同的分散存儲網絡。最後,我們的目標是將基於區塊鏈的數據(例如智能合約)納入搜索。
現在,我們概述了我們機制的兩個主要操作。
搜索以包含許多搜索詞的客戶端的查詢開始。然後,客戶通過解決與相應CID的網關設置的IPN名稱來獲取最新的TLI。然後將此TLI獲取並穿越,以檢查關鍵字是否具有KSI。如果是這種情況,相關的KSI是查詢,則返回包含關鍵字的內容。然後,客戶端可以從網絡中檢索這些文件。

搜索引擎的一個重要方面是排名機制。這通常以集中式的方式發生,而不會受到客戶的影響。儘管我們尚未實施複雜的排名機制,但我們設想在結果的客戶端將其排名,這使他們具有更大的權力和透明度。這使客戶可以控制排名功能,並根據特定需求個性化這些功能。目前,我們的機制根據CID返回結果。當輸入兩個搜索詞時,這兩個搜索詞都會首先返回,之後返回了僅包含其中一個條款的頁面。
任何搜索引擎的一個重要方面是增加索引條目。此過程涉及許多步驟,我們在下面描述。
第一個決定是將哪些內容添加到索引中,我們稱之為策劃。在傳統引擎中,其中包括所有公共網絡內容。儘管這實現了高性能,但在分散的網絡中執行時可能會增加太多的開銷。另一種方法可能是基於重要內容的網絡共識進行策劃。對於我們當前的系統,我們允許任何認為內容對於將其添加到網絡中至關重要的人。內容可以通過CID,DNSLink,ENS或IPNS標識符來解決。
接下來,發生爬行,其中涉及獲取和分析文件以提取重要關鍵字。如上所述,當某人決定添加內容時,我們的系統會爬行,因此手動提交CID被爬行。將來,我們設想在網絡上上傳或訪問內容時會自動發生這種情況。除了提取關鍵字,還可以添加其他元數據。當前,我們使用文件類型(PDF)和時間戳記時使用時,但將來打算添加標題,計數,大小等。

提取關鍵字(並產生RWI)後,需要存儲索引。對於存儲,我們使用IPF,因為這允許分散的協作存儲。我們已決定維護兩級層次結構。每個關鍵字將具有關聯的索引文件(KSI),節點可以在其中找到包含這些關鍵字的內容。保留一個單獨的索引(TLI),以指向KSI的標識符,並從我們的Gateway Server中發布給IPNS名稱。當一個節點在爬行文件後更新KSI時,他們將TLI中的指針更新為這些文件,並請求網關以更新IPNS記錄所解決的指針。這樣,IPNS的記錄指向了TLI的最新版本,進而指出了KSI的最新版本。
目前,如果客戶節點擁有密碼,則可以更改TLI,可以從該項目的維護者那裡獲得。這樣,潛在的惡意條目就不太可能。用密碼的節點可以看作是網絡中的“權限”。
在開發和測試中,我們對性能進行了許多觀察。由於我們的解決方案在很大程度上依賴IPF,因此我們的性能也是如此。我們發現,當節點沒有在他們的同齡人群中添加網關對等時,可能會發生重大延遲。儘管我們將其添加到CLI中,但連接仍然偶爾會下降。儘管這不會破壞系統,但確實會增加延遲。
此外,從網關更新我們的IPNS條目可能非常慢,並且當爬網流量增加時可能會成為性能瓶頸。我們已經開始研究替代方案,但將未來版本的實施留給了。一種選擇是使用DNS存儲指向最新TLI記錄的指針,但這帶來了DNS固有的許多其他挑戰。儘管頻繁更新解析器合同可能會變成巨額費用,但也可以使用基於區塊鏈的名稱註冊表,例如ENS。
有多種訪問Deece搜索的方法:
Client客戶端軟件可以由運行IPF的任何節點使用,並提供一個簡單的命令行接口。
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)在網絡上進行搜索和爬網。

注意:升級到版本2時,目前已使用網關。
LibraryCLI和網關都使用我們的Deece搜索軟件包運行。我們已經發布了此功能,因為這可以用於簡單的集成和擴展。
一旦在不同平台進行測試後,將添加進一步的安裝說明。目前,我們根據Linux上的安裝提供了說明。
對於Deece搜索工作,有許多要求和依賴關係。要作為客戶端運行,需要運行本地的IPFS守護程序,並加快結果加快結果,有助於添加網關維護PEER群中的TLI。要提交TLI作為客戶端的更改,需要密碼。最後,與加載結果可執行文件相同的目錄中需要存在一個配置文件。在此存儲庫中可以找到一個不完整的配置文件。
要運行客戶端,第一個IPFS(測試了版本1.13.7版本,較新版本應適用於次要修改),並且必須安裝GIT。
接下來,我們需要從來源安裝:
git clone github.com/navinkeizer/Deece接下來需要安裝Tesseract-OR,以及其他依賴項。對於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的更新計時,我們偶爾會在爬行過程中遇到問題。我們正在通過替代解決方案來解決此問題。