Files
rag-local/common/tokenizer.go
T
2026-08-05 10:28:44 +08:00

48 lines
957 B
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package common
import (
"strings"
"github.com/go-ego/gse"
)
var seg gse.Segmenter
func init() {
if err := seg.LoadDict(); err != nil {
panic("gse load dict failed: " + err.Error())
}
}
// Tokenize 中文分词,空格连接(FTS5 索引列格式:content_tokens
func Tokenize(text string) string {
tokens := seg.Cut(text, true)
var sb strings.Builder
for _, t := range tokens {
t = strings.TrimSpace(t)
if t == "" {
continue
}
sb.WriteString(t)
sb.WriteString(" ")
}
return strings.TrimSpace(sb.String())
}
// TokenizeQuery FTS5 查询串:每个词用双引号包裹(AND 语义),过滤 FTS5 特殊字符
func TokenizeQuery(text string) string {
tokens := seg.Cut(text, true)
var parts []string
for _, t := range tokens {
t = strings.TrimSpace(t)
if t == "" {
continue
}
if strings.ContainsAny(t, "\"*:()") {
continue
}
parts = append(parts, "\""+t+"\"")
}
return strings.Join(parts, " ")
}