Go Open Source, Distributed, Simple and efficient Search Engine
Go Open Source, Distributed, Simple and efficient full text search engine.
Can be achieved distributed index and search
Go version >= 1.8
Riot uses go module or dep to manage dependencies.
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
package mainimport ( "log"
"github.com/go-ego/riot" "github.com/go-ego/riot/types"
)
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 searcher.Flush() // 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!
package mainimport ( "log"
"github.com/go-ego/riot" "github.com/go-ego/riot/types"
)
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) searcher.Flush() req := types.SearchReq{Text: "你好"} search := searcher.Search(req) log.Println("search...", search)
}
Riot is primarily distributed under the terms of the Apache License (Version 2.0), base on wukong.