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()
}