go-ego/riot

The persistent storage data restart project disappears

qweawdqq opened this issue · 10 comments

The persistent storage data restart project disappears

刚添加完的索引是能够查询到的,但是重启工程之后,就查询不到之前添加的索引了

Please provide the code.

//标题、作者、标签
func AddContent(title,content,author string,labels[]string)(err error)  {
	//defer searcher.Close()
	//错误
	log.Println("添加了文件标题为: ", title)

	//err = GetError()
	//为文件添加属性
	attri :=types.Attri{title,author,unit.GetTimeNow(),0}
	ct :=types.DocData{Content: content}
	ct.Attri=attri
	//如果类别不为空则添加类别
	if labels != nil || len(labels) >0{
		ct.Labels = labels
	}
	//生成主键
	docid := uint64(time.Now().Unix())
	//插入
	searcher.Index(docid, ct)
	//searcher.Index(22, types.DocData{Content: content})
	//刷新
	searcher.Flush()
	log.Println("创建的索引数量: ", searcher.NumDocsIndexed())

	return err
}

我是使用了一个web框架(beego),请求过来之后在进行添加搜索文档的

Take a look at the code I duplicated.Adding is good, but as long as the service is restarted, there is no data added before.

I used a web framework (beego)
After the request comes in, the search document is added.
The files added before restarting the service disappeared

Please restore index first, then try gob registration,

gob.Register(MyAttriStruct{})

Thank you very much. The problem has been solved.

Thank you very much. The problem has been solved.
能提供一下 解决的代码吗

我也遇到同样问题,go version go1.12.4 linux/amd64
代码如下:
package main

import (
"log"
"net/http"
"time"

// rhttp "github.com/go-ego/riot/net/http"

"github.com/go-ego/riot"
"github.com/go-ego/riot/types"

)

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

opts = types.EngineOpts{
	Using: 1,
	IndexerOpts: &types.IndexerOpts{
		IndexType: types.DocIdsIndex,
	},
	UseStore: true,
	StoreFolder: "riot-index-data",
	StoreEngine: "bg", // bg: badger, lbd: leveldb, bolt: bolt
}

)

//标题、作者、标签
func AddContent(title,content,author string,labels[]string)(err error) {
//defer searcher.Close()
//错误
log.Println("添加了文件标题为: ", title)

//err = GetError()
//为文件添加属性
attri :=types.Attri{title,author,time.Now().Format("2006-01-02 15:04:05"),0}
ct :=types.DocData{Content: content}
ct.Attri=attri
//如果类别不为空则添加类别
if labels != nil || len(labels) >0{
	ct.Labels = labels
}
//生成主键
docid := time.Now().Format("2006-01-02 15:04:05")
//插入
searcher.Index(docid, ct)
//刷新
searcher.Flush()
log.Println("创建的索引数量: ", searcher.NumDocsIndexed())
return err

}

func Add(w http.ResponseWriter, req *http.Request){
AddContent("title1","content1","author1",[]string{"false"})
log.Println("after Add 创建的索引数量: ", searcher.NumDocsIndexed())
// restoreIndex()
}

func restoreIndex() {
searcher.Init(opts)
defer searcher.Close()
searcher.Flush()
log.Println("recover index number: ", searcher.NumDocsIndexed())
}

func main() {

searcher.Init(opts)
// restoreIndex()
log.Println("创建的索引数量: ", searcher.NumDocsIndexed())
// http.HandleFunc("/search", rhttp.Search)
// http.HandleFunc("/dist", rhttp.WgDist)
// http.HandleFunc("/Add", Add)
// log.Println("listen and serve on 8080...")
// log.Fatal(http.ListenAndServe(":8088", nil))

// Add(nil,nil)
// searcher.Flush()

sea := searcher.Search(types.SearchReq{
	Text: "content1",
	RankOpts: &types.RankOpts{
		OutputOffset: 0,
		MaxOutputs:   100,
	}})
log.Println("查询: ", sea)

defer searcher.Close()

}