This commit is contained in:
12600k-rog-d4
2025-12-09 20:33:57 +08:00
parent 144ed3cbdf
commit 8f4d399cfd
1498 changed files with 3778 additions and 3654 deletions

View File

@@ -0,0 +1,75 @@
package search
import (
"log/slog"
"github.com/blevesearch/bleve/v2"
"github.com/blevesearch/bleve/v2/mapping"
"github.com/mlogclub/simple/common/jsons"
)
type TopicDocument struct {
Id int64 `json:"id"`
NodeId int64 `json:"nodeId"`
UserId int64 `json:"userId"`
Nickname string `json:"nickname"`
Title string `json:"title"`
Content string `json:"content"`
Tags []string `json:"tags"`
Recommend bool `json:"recommend"`
Status int `json:"status"`
CreateTime int64 `json:"createTime"`
}
func (t *TopicDocument) ToStr() string {
str, err := jsons.ToStr(t)
if err != nil {
slog.Error(err.Error(), slog.Any("err", err))
}
return str
}
func newIndex(indexPath string) bleve.Index {
mapping := bleve.NewIndexMapping()
mapping.DefaultMapping.AddFieldMappingsAt("id", newNumField())
mapping.DefaultMapping.AddFieldMappingsAt("nodeId", newNumField())
mapping.DefaultMapping.AddFieldMappingsAt("userId", newNumField())
mapping.DefaultMapping.AddFieldMappingsAt("nickname", newTextField())
mapping.DefaultMapping.AddFieldMappingsAt("title", newTextField())
mapping.DefaultMapping.AddFieldMappingsAt("content", newTextField())
mapping.DefaultMapping.AddFieldMappingsAt("tags", newTextField())
mapping.DefaultMapping.AddFieldMappingsAt("recommend", newBoolField())
mapping.DefaultMapping.AddFieldMappingsAt("status", newNumField())
mapping.DefaultMapping.AddFieldMappingsAt("createTime", newNumField())
index, err := bleve.New(indexPath, mapping)
if err != nil {
slog.Info("创建索引失败", slog.Any("err", err))
}
return index
}
func newTextField() *mapping.FieldMapping {
textField := bleve.NewTextFieldMapping()
// textField.Store = true
textField.Index = true
textField.IncludeTermVectors = true
textField.Analyzer = "en"
return textField
}
func newNumField() *mapping.FieldMapping {
numField := bleve.NewNumericFieldMapping()
// numField.Store = true
numField.Index = true
numField.DocValues = true
return numField
}
func newBoolField() *mapping.FieldMapping {
boolField := bleve.NewBooleanFieldMapping()
// boolField.Store = true
boolField.Index = true
boolField.DocValues = true
return boolField
}