45 lines
852 B
Go
45 lines
852 B
Go
|
package curd
|
|||
|
|
|||
|
import (
|
|||
|
"catface/app/model"
|
|||
|
"catface/app/model_es"
|
|||
|
"catface/app/model_res"
|
|||
|
)
|
|||
|
|
|||
|
func CreateDocCurdFactory() *DocCurd {
|
|||
|
return &DocCurd{
|
|||
|
doc: model.CreateDocFactory(""),
|
|||
|
doc_es: model_es.CreateDocESFactory()}
|
|||
|
}
|
|||
|
|
|||
|
type DocCurd struct { // 组合方法的使用
|
|||
|
doc *model.Doc
|
|||
|
doc_es *model_es.Doc
|
|||
|
}
|
|||
|
|
|||
|
func (d *DocCurd) TopK(embedding []float64, k int) (temp []model_res.DocResult, err error) {
|
|||
|
// ES:TopK
|
|||
|
docs_es, err := d.doc_es.TopK(embedding, k)
|
|||
|
if err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// MySQL:补充基本信息
|
|||
|
var ids []int64
|
|||
|
for _, doc := range docs_es {
|
|||
|
ids = append(ids, doc.Id)
|
|||
|
}
|
|||
|
docs := d.doc.ShowByIds(ids, "id", "name")
|
|||
|
|
|||
|
// 装载
|
|||
|
for _, doc := range docs {
|
|||
|
for _, doc_es := range docs_es {
|
|||
|
if doc.Id == doc_es.Id {
|
|||
|
temp = append(temp, *model_res.NewDocResult(&doc, &doc_es))
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return
|
|||
|
}
|