如何執行屬於你的IPFS搜尋引擎

買賣虛擬貨幣
Lens是分散式Web的搜尋引擎,是一個開源IPFS工具,允許從IPFS獲取內容,並將其編入索引以便日後搜尋。目前Lens可以索引以下mime型別:其中的一個要求就是所有資料都存在IPFS上,並且可由正在執行的Lens例項發現。將來我們可能會增加對其他分散式網路的支援,例如DAT或SWARM。為了與Lens互動,我們有一個簡單但強大的gRPCAPI,支援簡單和複雜的查詢。text/*image/*application/pdf索引如何執行我們有幾種不同的方法來分析我們將連結在一起的資料。當給定PDF時,我們首先嚐試從頁面中提取影象和文字。該文字提供給bleve,它能夠處理簡單和複雜的搜尋查詢。還使用Tesseract進行光學字元識別以提取可搜尋文字,並使用Tensorflow進行影象的基本分類,對影象進行分析。在分析其他mime型別(如image/ *)時,我們嘗試執行相同的Tesseract和影象分類分析,就像我們從PDF中提取的影象一樣。在分析像text/ *這樣的mime型別時,我們直接將文字提供給bleve。
搜尋如何進行搜尋最起碼包括查詢,從區塊鏈之類的單個單詞,到區塊鏈資料儲存之類的搜尋短語。我們還支援更復雜的查詢,例如針對特定標籤,類別,mime型別等進行篩選,但這些查詢完全是可選的。響應查詢的是一個文件陣列,其中包含與您的查詢匹配的內容的IPFS雜湊值,內容的mimetype,以及顯示此內容與您的搜尋查詢的相關性的匹配分數。

安裝Lens

您可以透過幾種不同的方式安裝鏡頭,最簡單的方法是使用我們預先搭建的Lensdocker映象。使用docker映象時,預設設定是啟動gRPC伺服器監聽0.0.0.0:9998,沒有任何加密,並使用ghPC身份驗證金鑰blahblahblah。docker容器還需要連線到IPFSHTTP API,預設值為127.0.0.1:5001。要安裝此docker映象,請執行以下命令dockerpull rtradetech / lens:latest

或者對於那些想要更多移動設定的人來說,我們有一個docker-compose設定,它也可以執行所需的IPFS節點。要使用此docker-compose檔案,需要執行以下命令集。這些將使用/tmp目錄作為儲存所有檔案的基本目錄。
$> wget -O lens.yml https://raw.githubusercontent.com/RTradeLtd/Lens/master/lens.yml
$> LENS=latest BASE=/tmp docker-compose -f lens.yml up

使用Lens

在我們開始介紹如何使用Lens之前,我們已經發布了現有的Lens索引,如https://temporal.cloud/lens所見,可透過IPFS下載,可以透過CIDQmZqSYDQrtWg4LHnqT6DPqa1XUr7u430aGcyaTiGHJY3SR下載。它的大小為1.2GB,包含各種研究論文,加密白皮書,我已提交,當然也有其他使用者提交的檔案。

所有索引和搜尋都可以透過gRPCAPI完成,我們已經在github上釋出了協議緩衝區。您可以使用支援協議緩衝區的任何語言為Lens構建API!

有關我們如何使用這些協議緩衝區構建Temporal中的LensAPI客戶端的示例,您可以檢視我們的Golang示例:


package clients

import (

"fmt"

"github.com/RTradeLtd/config/v2"

"github.com/RTradeLtd/grpc/dialer"

pb "github.com/RTradeLtd/grpc/lensv2"

"google.golang.org/grpc"

"google.golang.org/grpc/credentials"

)



const (

defaultURL = "127.0.0.1:9998"

)

// LensClient is a lens client used to make requests to the Lens gRPC server

type LensClient struct {

conn *grpc.ClientConn

pb.LensV2Client

}



// NewLensClient is used to generate our lens client

func NewLensClient(opts config.Services) (*LensClient, error) {

dialOpts := make([]grpc.DialOption, 0)

if opts.Lens.TLS.CertPath != "" {

creds, err := credentials.NewClientTLSFromFile(opts.Lens.TLS.CertPath, "")

if err != nil {

return nil, fmt.Errorf("could not load tls cert: %s", err)

}

dialOpts = append(dialOpts,

grpc.WithTransportCredentials(creds),

grpc.WithPerRPCCredentials(dialer.NewCredentials(opts.Lens.AuthKey, true)))

} else {

dialOpts = append(dialOpts,

grpc.WithInsecure(),

grpc.WithPerRPCCredentials(dialer.NewCredentials(opts.Lens.AuthKey, false)))

}

var url string

if opts.Lens.URL == "" {

url = defaultURL

} else {

url = opts.Lens.URL

}



conn, err := grpc.Dial(url, dialOpts...)

if err != nil {

return nil, err

}

return &LensClient{

conn: conn,

LensV2Client: pb.NewLensV2Client(conn),

}, nil

}



// Close shuts down the client's gRPC connection

func (l *LensClient) Close() { l.conn.Close() }
實際索引資料,一旦你的gRPC客戶端啟動並執行,你需要做的只是那個叫做索引的命令,讓Lens發揮其魔力!根據內容在網路中的位置,此過程可能需要一段時間。一般來說,如果內容是本地可用的,則索引分析不應超過一分鐘,通常為30秒。提交索引資料時,必須提供兩個引數,ObjectType,它應使用協議緩衝區中定義的IndexReq_IPLD。第二個引數是ObjectIdentifier,它應該是您要索引的內容的IPFS雜湊值。

搜尋資料也非常簡單,並且需要呼叫搜尋命令。唯一必需的引數是Query,它定義了搜尋資料的方式。(可選)您可以使用像Hashes這樣的過濾器來篩選搜尋結果,以便只匹配特定的IPFS雜湊值,MimeTypes只匹配特定的mime型別。此命令完成所需的時間取決於多種因素,例如索引的大小,匹配的物件數,索引所在的磁碟速度。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;