init
This commit is contained in:
75
bbs-go/server/internal/pkg/search/common.go
Normal file
75
bbs-go/server/internal/pkg/search/common.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user