- 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.