go 分散式全文搜尋引擎 RiotSearch
riot 分散式全文搜尋引擎, 採用 Go 語言開發。功能特性:
- 高效索引和搜尋(1M 條微博 500M 資料 28 秒索引完,1.65 毫秒搜尋響應時間,19K 搜尋 QPS)
- 支援中文分詞(使用 gse 分詞包併發分詞,速度 27MB/秒)
- 支援邏輯搜尋
- 支援中文轉拼音搜尋
- 支援計算關鍵詞在文字中的緊鄰距離(token proximity)
- 支援計算 BM25 相關度
- 支援自定義評分欄位和評分規則
- 支援線上新增、刪除索引
- 支援多種持久儲存
- 支援 heartbeat
- 支援分散式索引和搜尋
- 可實現分散式索引和搜尋
- 採用對商業應用友好的 Apache License v2 釋出
示例程式碼:
package main
import (
"log"
"github.com/go-ego/riot"
"github.com/go-ego/riot/types"
)
var (
// searcher is coroutine safe
searcher = riot.Engine{}
)
func main() {
// Init searcher
searcher.Init(types.EngineOpts{
Using: 4,
SegmenterDict: "./dict/dictionary.txt"})
defer searcher.Close()
text := "Google Is Experimenting With Virtual Reality Advertising"
text1 := `Google accidentally pushed Bluetooth update for Home
speaker early`
text2 := `Google is testing another Search results layout with
rounded cards, new colors, and the 4 mysterious colored dots again`
// Add the document to the index, docId starts at 1
searcher.IndexDoc(1, types.DocIndexData{Content: text}, false)
searcher.IndexDoc(2, types.DocIndexData{Content: text1}, false)
searcher.IndexDoc(3, types.DocIndexData{Content: text2}, false)
// Wait for the index to refresh
searcher.FlushIndex()
// The search output format is found in the types.SearchResp structure
log.Print(searcher.Search(types.SearchReq{Text: "google testing"}))
}
主要改進:
- 增加邏輯搜尋
- 增加拼音搜尋
- 增加分散式和 heartbeat
- 分詞等改進
- 增加更多 api
- 修復 bug
- 刪除依賴 cgo 的儲存引擎, 增加 badger 和 leveldb 持久化引擎
專案詳情:
Github 線上原始碼:https://github.com/go-ego/riot
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- ElasticSearch全文搜尋引擎Elasticsearch
- 全文搜尋引擎 Elasticsearch 入門教程Elasticsearch
- 57_初識搜尋引擎_分散式搜尋引擎核心解密之query phase分散式解密
- Nebula 基於 ElasticSearch 的全文搜尋引擎的文字搜尋Elasticsearch
- Scrapy分散式爬蟲打造搜尋引擎-(八)elasticsearch結合django搭建搜尋引擎分散式爬蟲ElasticsearchDjango
- 分散式搜尋引擎Elasticsearch的架構分析分散式Elasticsearch架構
- 搜尋引擎分散式系統思考實踐分散式
- Lucene : 基於Java的全文搜尋引擎Java
- ElasticSearch分散式搜尋引擎——從入門到精通Elasticsearch分散式
- 分散式搜尋引擎Elasticsearch基礎入門學習分散式Elasticsearch
- ElasticSearch大資料分散式彈性搜尋引擎使用Elasticsearch大資料分散式
- Laravel5.5 使用 Elasticsearch 做引擎,scout 全文搜尋LaravelElasticsearch
- Elasticsearch——全文搜尋Elasticsearch
- ES(Elasticsearch)支援PB級全文搜尋引擎入門教程Elasticsearch
- elasticsearch(五)---分散式搜尋Elasticsearch分散式
- 搜尋引擎-03-搜尋引擎原理
- Laravel xunsearch 全文搜尋Laravel
- oracle全文搜尋功能Oracle
- 搜尋引擎分散式系統思考實踐 |得物技術分散式
- Tantivy與Quickwit:類似Lucene的Rust全文搜尋引擎庫UIRust
- 【搜尋引擎】Solr全文檢索近實時查詢優化Solr優化
- 海量資料搜尋---搜尋引擎
- Elasticsearch分散式搜尋叢集配置Elasticsearch分散式
- 構建高效能分散式搜尋引擎(Wcf-示例篇)三薦分散式
- 【搜尋引擎】 PostgreSQL 10 實時全文檢索和分詞、相似搜尋、模糊匹配實現類似Google搜尋自動提示SQL分詞Go
- 微信全文搜尋優化之路優化
- SQLite中使用全文搜尋FTSSQLite
- 如何全文搜尋oracle官方文件Oracle
- 構建高效能分散式搜尋引擎(Wcf-基礎篇)一薦分散式
- (1)分散式搜尋ElasticSearch認識ElasticSearch分散式Elasticsearch
- 分散式搜尋系統的設計分散式
- 搜尋引擎es-分詞與搜尋分詞
- 搜尋引擎語法
- 搜尋引擎命令大全
- 搜尋引擎程式碼
- 搜尋引擎面試題面試題
- SQL Server 全文搜尋功能、全文索引方式介紹SQLServer索引
- Laravel 使用 xunsearch(迅搜)全文檢索引擎Laravel索引