Go 文本索引庫:Bleve

jopen 9年前發布 | 16K 次閱讀 Bleve 搜索引擎

Bleve,發音為 BLEH-vee,是一個現代化的 Go 搜索索引庫。Bleve 是使用 Go 編寫的現代化文本索引庫,支持各種常用的搜索索引,包括過濾,排序和分類。

當使用 Java 和 JVM 的時候使用比較多的是 Lucene,Elasticsearch 和 Solr。但是有時候不想要那么多依賴,想要避免外部服務,簡單編譯部署就可以運行。所以 Couchbase 團隊就構建了一個 Go 庫,支持大部分 Lucene 常規使用的文本分析組件,可以使用 off-the-shelf key-value (KV) 存儲。

特性:

  • 支持任何 go 數據架構索引,包括 JSON

  • 通過強大的配置智能默認備份

  • 支持字段類型

    • Text, Numeric, Date

  • 支持查詢類型

    • Term, Phrase, Match, Match Phrase, Prefix

    • Conjunction, Disjunction, Boolean

    • Numeric Range, Date Range

    • 人類條目的簡單查詢語法

  • tf-idf Scoring

  • 默認搜索匹配結果高亮

  • 支持聚合 Facets:

    • Terms Facet

    • Numeric Range Facet

    • Date Range Facet

索引

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)


項目主頁:http://www.baiduhome.net/lib/view/home/1426056832107

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