请问,搜索的结果能不能带一些文档的属性?
请问,搜索得到的结果能不能带一些文档的属性。
例如搜索得到的结果包括文档的创建人,创建时间,所属栏目等属性。 我是用数据库的某条记录作索引,返回的结果想带上这条记录的属性。
一般是放在正排索引里,搜索返回的docid再去查找一次,比如例子
https://github.com/huichen/wukong/blob/master/examples/codelab/search_server.go#L120-L138
其实,我是想在其创建索引时将文档属性并存入硬盘文件,查找中再读出来,请问该如做呢?
作索引一般是从数据库中读出记录,然后索引存为硬盘文件(顺便存入文档 的一些属性)、查找,以列表形式输出(此时顺便从读出文档的一些其它属性,如创建人、文档URL、所属状态等)。 所以建议wukong做稍许修改,实用性和通用性就更好一些。 例如: 索引时, searcher.IndexDocument(120, types.DocumentIndexData{Attri: types.Attri{Title: "标题",Author:"我"}, Content: "数据库某条记录内容"}) //带上属性存入硬盘 搜索时, aa := searcher.Search(types.SearchRequest{Text: "记录"}) for k, _ := range aa.Docs { fmt.Println(aa.Docs[k].DocId, aa.Docs[k].Attri) //顺便输出属性,以便更容易形成列表。 }
这个可能是小众需求,多数情况下,拿到docID再去外部存储取属性就好了,比如redis等。
搜索引擎只负责索引和排序,不同的功能最好还是分开的好。
其实我建议把docId换成string类型,至于大小排序,可以用户自己来控制,这样在DocId中可以带上一些简单属性,比如数据库、集合名、类别等信息
@huichen 作者你的这个项目我已经烂熟于心了,每行代码我记得清清楚楚,真心想把悟空完善起来,我是做大数据的,希望把它用到项目中。。。
string的overhead太多,建议在引擎外部保存string到uint64的转换关系
如何将查出的结果列表显示,不可能只是docid啊。要列表,还得用docid再从数据库中再逐个查一次?例如得带上对应的title之类属性最好了。
如何将查出的结果列表显示,不可能只是docid啊。 要列表,还得用docid再从数据库中再逐个查一次?例如得带上对应的title之类属性最好了。
我这里是对mongo的字段进行全文索引,希望使用string作为docid。
lucene 记得有这么个功能,除了有文档的id,还有文档的部分字段内容属性。
@csrgxtu 这个是 data_node 的功能,我们内部版本已经基于 kubernetes 在开发分布式版本,也许将来会开源出来。
@huichen ,我也在我们公司系统中使用了wukong,简单暴力,不用lucene就是因为与现有的Go集成有隔阂。谢谢你了。
@csrgxtu 感谢支持!
搜索结果的列表显示不可能只是docId吧?! 一般要有时间、标题等简要信息。
如果知道许多个docId,再一个个select从数据库中查找,效率也太低了吧。
强烈建议wukong做稍许修改,实用性和通用性就更好一些。 例如: 索引时, searcher.IndexDocument(120, types.DocumentIndexData{Attri: types.Attri{Title: "标题",Author:"我"}, Content: "数据库某条记录内容"}) //带上属性 搜索时, aa := searcher.Search(types.SearchRequest{Text: "记录"}) for k, _ := range aa.Docs { fmt.Println(aa.Docs[k].DocId, aa.Docs[k].Attri) //顺便输出属性,以便更容易形成列表。 }
你也可以fork修改呀,估计作者就是这样设计的,是为了解决他们当时遇到的问题。若从模块化的角度,这样也是可以的,我只做这一件事情,剩下的逻辑由相应需要的模块去实现。
请问:具体改哪处? @csrgxtu, @huichen
这里还是有问题的,一般搜索引擎会提供搜索结果上下文的显示,那么就需要把所有东西都载入了,那不就把整个数据库载入一样的效果
那搜索结果如何列表显示,显示其它的一些属性,并不是要把所有信息都载入。目的很单纯啊,就是列表显示的时候,不仅仅是一个docID,而是要附带一些简单的信息,如时间、作者、标题等。
难道根据docID再一个个select? 希望是仅存入一些简单的属性。
额,我当初直接根据id 查找了数据库,好像wukong的id还不能是string类型呢。要修改的话,就得好好读一下wukong的源码逻辑了。
@eruca ,我不能理解你所说的那句话,上下文?
我的意思是:比如你要查找 搜索引擎,那么搜索到的结果必然有 XXX搜索引擎XXX,显示给你看啊,可能一篇文章里有好多处搜索引擎呢,那都得显示出来啊,那么基本上这篇索引的文章都载入内存比较不合实际吗