Need help with riot?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

6.0K Stars 457 Forks Apache License 2.0 573 Commits 50 Opened issues


Go Open Source, Distributed, Simple and efficient Search Engine; Warning: This is V1 and beta version, because of big memory consume, and the V2 will be rewrite all code.

Services available


Need anything else?

Contributors list

Riot search

CircleCI Status Appveyor codecov Build Status Go Report Card GoDoc GitHub release Join the chat at <!-- Release --> <!--Releases-->

Go Open Source, Distributed, Simple and efficient full text search engine.




Go version >= 1.8


Riot uses go module or dep to manage dependencies.


go get -u


go get -u 

re riot

To create a new riot application

$ re riot my-riotapp

re run

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

package main

import ( "log"



var ( // searcher is coroutine safe searcher = riot.Engine{} )

func main() { // Init searcher.Init(types.EngineOpts{ // Using: 4, NotUseGse: true, }) 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.Index("1", types.DocData{Content: text})
searcher.Index("2", types.DocData{Content: text1}, false)
searcher.IndexDoc("3", types.DocData{Content: text2}, true)

// Wait for the index to refresh
// engine.FlushIndex()

// The search output format is found in the types.SearchResp structure
log.Print(searcher.Search(types.SearchReq{Text:"google testing"}))


It is very simple!

Use default engine:

package main

import ( "log"



var ( searcher = riot.New("zh") )

func main() { data := types.DocData{Content: I wonder how, I wonder why , I wonder where they are} data1 := types.DocData{Content: "所以, 你好, 再见"} data2 := types.DocData{Content: "没有理由"}

searcher.Index("1", data)
searcher.Index("2", data1)
searcher.Index("3", data2)

req := types.SearchReq{Text: "你好"}
search := searcher.Search(req)
log.Println("search...", search)


Look at more Examples

Look at Store example

Look at Logic search example

Look at Pinyin search example

Look at different dict and language search example

Look at benchmark example

Riot search engine templates, client and dictionaries



Riot is primarily distributed under the terms of the Apache License (Version 2.0), base on wukong.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.