CircleCI Status Build Status Go Report Card GoDoc Release Join the chat at https://gitter.im/go-ego/ego
- Efficient indexing and search (1M blog 500M data 28 seconds index finished, 1.65 ms search response time, 19K search QPS)
- Support for logical search
- Support Chinese word segmentation (use gse word segmentation package concurrent word, speed 27MB / s)
- Support the calculation of the keyword in the text close to the distance(token proximity)
- Support calculation BM25 correlation
- Support custom scoring field and scoring rules
- Support add online, delete index
- Support heartbeat
- Support multiple persistent storage
- Support distributed index and search
- Can be achieved distributed index and search
Go version >= 1.8
go get -u github.com/go-ego/riot
go get -u github.com/go-ego/re
To create a new riot application
$ re riot my-riotapp
To run the application we just created, you can navigate to the application folder and execute:
$ cd my-riotapp && re run
Look at an example(simplest_example.go)
package main import ( "log" "github.com/go-ego/riot/engine" "github.com/go-ego/riot/types" ) var ( // searcher is coroutine safe searcher = engine.Engine{} ) func main() { // Init searcher.Init(types.EngineInitOptions{ NotUsingSegmenter: true}) defer searcher.Close() // Add the document to the index, docId starts at 1 searcher.IndexDocument(1, types.DocIndexData{Content: "Google Is Experimenting With Virtual Reality Advertising"}, false) searcher.IndexDocument(2, types.DocIndexData{Content: "Google accidentally pushed Bluetooth update for Home speaker early"}, false) searcher.IndexDocument(3, types.DocIndexData{Content: "Google is testing another Search results layout with rounded cards, new colors, and the 4 mysterious colored dots again"}, false) // Wait for the index to refresh searcher.FlushIndex() // The search output format is found in the types.SearchResponse structure log.Print(searcher.Search(types.SearchRequest{Text:"google testing"})) }
It is very simple!
Supporting riot, buy me a coffee.
Donate money by paypal to my account vzvway@gmail.com
Riot is primarily distributed under the terms of the Apache License (Version 2.0), base on wukong.