Bleve:來自Couchbase、基于Go語言的全文索引與檢索庫

dy223 9年前發布 | 12K 次閱讀 Bleve

原文  http://www.infoq.com/cn/news/2015/03/bleve-couchbase-go


Bleve 是一個由 Couchbase 團隊基于Go語言開發的索引/索引庫,它支持常用的檢索和索引功能,如索引、檢索、過濾、排序、聚合、高亮等。Bleve包括常見的文本分析組件,且能夠使用現有的K/V存儲系統進行存儲。Bleve具有以下主要特性:

  • 支持所有Go數據結構的索引,如JSON 、結構體、Slices、字符串等
  • 具有強大、智能的配置功能
  • 具有豐富的Field類型,如文本、數字、日期等
  • 具有豐富查詢類型,如Term、短語、模糊/精確匹配、前綴、邏輯與(Conjunction)、邏輯或(Disjunction)、布爾(Boolean)、數字范圍、日期范圍等查詢
  • 具有簡單的 查詢語法 ,且能夠實現復雜的查詢
  • 具有豐富的接口,且能夠實現功能擴展
  • 具有易用且高級API能夠索引數據模型中的任何對象
  • 基于標準的 TF-IDF 加權評分算法
  • 支持查詢匹配結果的高亮顯示
  • 支持多種聚合功能(Facet),如能夠根據Term、數字范圍、日期范圍聚合等
  • 文本解析組件現已支持眾多分析組件,支持將近二十種語言,如丹麥語、荷蘭語、英國、法語、德語、泰語、土耳其語等

索引和檢索示例如下:

索引示例

message := struct{
  Id   string
  From string
  Body string
}{
  Id:   "example",
  From: "marty.schoch@gmail.com",
  Body: "bleve indexing is easy",
}
mapping := bleve.NewIndexMapping()
index, err := bleve.New("example.bleve", mapping)
if err != nil {
  panic(err)
}
index.Index(message.Id, message)

檢索示例

> index, _ := bleve.Open("example.bleve")
> query := bleve.NewQueryStringQuery("bleve")
> searchRequest := bleve.NewSearchRequest(query)
> searchResult, _ := index.Search(searchRequest)

Bleve基于 Apache License Version 2.0 協議開源,其代碼托管在 GitHub 。為了減少項目依賴、簡化編譯與部署,于是,Couchbase團隊拋棄了Java環境下的Lucene方案(如Lucene、 Elasticsearch、Solr等),并構建了Bleve。它為開發者提供了一個Go語言環境下的全文檢索新方案。讀者可以通過官方提供的 Bleve Wiki內容 在線檢索實例 以體驗Bleve的檢索功能效果。更多關于Bleve的內容,請讀者查看GitHub提供的 Wiki頁面 或其官網。

 本文由用戶 dy223 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!