analysis

package
v0.0.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 29, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewGseSearchAnalyzer

func NewGseSearchAnalyzer() *analysis.Analyzer

NewGseSearchAnalyzer 返回一个使用 gse 后端 + stop 过滤的搜索 analyzer 兼容旧的 gse_search analyzer 注册

func NewGseSearchTokenizer

func NewGseSearchTokenizer() analysis.Tokenizer

NewGseSearchTokenizer 返回 gse 搜索 tokenizer(兼容旧注册)

func NewGseStandardAnalyzer

func NewGseStandardAnalyzer() *analysis.Analyzer

NewGseStandardAnalyzer 返回一个使用 gse 后端 + stop 过滤的 analyzer 兼容旧的 gse_standard analyzer 注册

func NewGseStandardTokenizer

func NewGseStandardTokenizer() analysis.Tokenizer

NewGseStandardTokenizer 返回 gse 标准 tokenizer(兼容旧注册)

func NewGseStopTokenFilter

func NewGseStopTokenFilter() analysis.TokenFilter

NewGseStopTokenFilter 返回停用词 filter(兼容旧注册)

func ReleaseToken

func ReleaseToken(t *Token)

ReleaseToken 归还 Token 到池

Types

type AnalysisConfig

type AnalysisConfig struct {
	Backend     string // gse | jieba
	Concurrency int    // 分词并发数

	// 词典路径
	DictPath         string   // 主词典
	UserDictPath     string   // 用户词典
	SynonymPath      string   // 同义词词典
	StopPath         string   // 停用词词典
	PinyinPath       string   // 拼音词典
	PosKeepPath      string   // 词性保留
	ForceSplitPath   string   // 强制分词
	ForceNoSplitPath string   // 禁止分词
	CorrectPath      string   // 纠错词典
	WeightPath       string   // 权重词典
	DomainDicts      []string // 领域词库列表

	// Pipeline 配置
	PinyinFull         bool
	PinyinFirstLetter  bool
	PinyinKeepOriginal bool
	SynonymMode        string // bidirectional | unidirectional
	NgramMin           int
	NgramMax           int
	STConvertDir       string // s2t | t2s

	// 停用词
	StopEnable      bool
	StopPosFilter   bool
	StopMinTokenLen int

	// 性能
	CacheSize   int
	CacheTTLSec int
	MaxInputLen int

	// 调试
	Debug           bool
	SlowThresholdMs int
	Explain         bool

	// 热加载
	DictWatch           bool
	DictWatchDebounceMs int
}

AnalysisConfig 分词引擎配置

func ConfigFromEnv

func ConfigFromEnv() AnalysisConfig

ConfigFromEnv 从环境变量加载配置(占位,后续实现)

func DefaultConfig

func DefaultConfig() AnalysisConfig

DefaultConfig 返回默认配置

type Backend

type Backend interface {
	// Name 返回后端名称,如 "gse"、"jieba"
	Name() string
	// Cut 分词,isSearch=true 时启用搜索模式(子词扩展)
	Cut(text []byte, isSearch bool) []Token
}

Backend 分词后端接口 所有后端必须实现此接口

type CNGramProcessor

type CNGramProcessor struct {
	MinGram int
	MaxGram int
}

CNGramProcessor N-gram 补偿:对中文字词做 2-3 gram 扩展

func NewCNGramProcessor

func NewCNGramProcessor() *CNGramProcessor

func (*CNGramProcessor) Name

func (p *CNGramProcessor) Name() string

func (*CNGramProcessor) Process

func (p *CNGramProcessor) Process(tokens []Token) []Token

type CorrectProcessor

type CorrectProcessor struct {
	// contains filtered or unexported fields
}

CorrectProcessor 纠错词典:将错误写法映射为正确写法

func NewCorrectProcessor

func NewCorrectProcessor(path string) *CorrectProcessor

func (*CorrectProcessor) Name

func (p *CorrectProcessor) Name() string

func (*CorrectProcessor) Process

func (p *CorrectProcessor) Process(tokens []Token) []Token

type Engine

type Engine struct {
	// contains filtered or unexported fields
}

Engine 分词引擎,管理 Backend + Pipeline 链

func NewEngine

func NewEngine(cfg EngineConfig) *Engine

NewEngine 创建分词引擎

func (*Engine) BackendName

func (e *Engine) BackendName() string

BackendName 返回后端名称

func (*Engine) IndexAnalyzer

func (e *Engine) IndexAnalyzer(field string, mappings *meta.Mappings) *analysis.Analyzer

IndexAnalyzer 返回一个可用于 bluge 索引的 analyzer 根据字段的 mapping 配置选择索引分词器

func (*Engine) IndexTokens

func (e *Engine) IndexTokens(text []byte) []Token

IndexTokens 索引分词:标准模式 + pipeline

func (*Engine) SearchTokens

func (e *Engine) SearchTokens(text []byte) []Token

SearchTokens 搜索分词:搜索模式 + pipeline

type EngineConfig

type EngineConfig struct {
	Backend        Backend
	IndexPipeline  []Processor
	SearchPipeline []Processor
	Config         AnalysisConfig
}

EngineConfig Engine 配置

type ForceNoSplitProcessor

type ForceNoSplitProcessor struct {
	// contains filtered or unexported fields
}

ForceNoSplitProcessor 禁止分词:保持某些词不分词

func NewForceNoSplitProcessor

func NewForceNoSplitProcessor(path string) *ForceNoSplitProcessor

func (*ForceNoSplitProcessor) Name

func (p *ForceNoSplitProcessor) Name() string

func (*ForceNoSplitProcessor) Process

func (p *ForceNoSplitProcessor) Process(tokens []Token) []Token

type ForceSplitProcessor

type ForceSplitProcessor struct {
	// contains filtered or unexported fields
}

ForceSplitProcessor 强制分词:将某些词按指定方式切分

func NewForceSplitProcessor

func NewForceSplitProcessor(path string) *ForceSplitProcessor

func (*ForceSplitProcessor) Name

func (p *ForceSplitProcessor) Name() string

func (*ForceSplitProcessor) Process

func (p *ForceSplitProcessor) Process(tokens []Token) []Token

type GseBackend

type GseBackend struct {
	// contains filtered or unexported fields
}

GseBackend 基于 go-ego/gse 的分词后端(纯 Go,无 CGo)

func NewGseBackend

func NewGseBackend() *GseBackend

NewGseBackend 创建 gse 后端

func (*GseBackend) Cut

func (b *GseBackend) Cut(text []byte, isSearch bool) []Token

Cut 对输入进行分词

func (*GseBackend) Name

func (b *GseBackend) Name() string

type JiebaBackend

type JiebaBackend struct {
	// contains filtered or unexported fields
}

JiebaBackend 基于 fumiama/jieba 的分词后端(纯 Go,完整 jieba 词典)

func NewJiebaBackend

func NewJiebaBackend(dictPath string) *JiebaBackend

NewJiebaBackend 创建 jieba 后端 dictPath: 词典文件路径,空字符串使用内嵌词典

func (*JiebaBackend) Cut

func (b *JiebaBackend) Cut(text []byte, isSearch bool) []Token

Cut 对输入进行分词 isSearch=true 时使用搜索引擎模式(拆分长词提高召回)

func (*JiebaBackend) Name

func (b *JiebaBackend) Name() string

type LowerCaseProcessor

type LowerCaseProcessor struct{}

LowerCaseProcessor 统一转小写

func (*LowerCaseProcessor) Name

func (p *LowerCaseProcessor) Name() string

func (*LowerCaseProcessor) Process

func (p *LowerCaseProcessor) Process(tokens []Token) []Token

type PinyinConfig

type PinyinConfig struct {
	Full         bool // 全拼,如 "中国"→"zhongguo"
	FirstLetter  bool // 首字母,如 "中国"→"zg"
	KeepOriginal bool // 是否保留原词
}

PinyinConfig 拼音扩展配置

type PinyinProcessor

type PinyinProcessor struct {
	// contains filtered or unexported fields
}

PinyinProcessor 拼音扩展

func NewPinyinProcessor

func NewPinyinProcessor(cfg PinyinConfig) *PinyinProcessor

func (*PinyinProcessor) Name

func (p *PinyinProcessor) Name() string

func (*PinyinProcessor) Process

func (p *PinyinProcessor) Process(tokens []Token) []Token

type Processor

type Processor interface {
	Name() string
	Process(tokens []Token) []Token
}

Processor 分词管道处理器接口

type STConvertProcessor

type STConvertProcessor struct {
	// contains filtered or unexported fields
}

STConvertProcessor 繁简转换

func NewSTConvertProcessor

func NewSTConvertProcessor() *STConvertProcessor

func (*STConvertProcessor) Name

func (p *STConvertProcessor) Name() string

func (*STConvertProcessor) Process

func (p *STConvertProcessor) Process(tokens []Token) []Token

type StopProcessor

type StopProcessor struct {
	// contains filtered or unexported fields
}

StopProcessor 停用词过滤:去除无意义的高频词

func NewStopProcessor

func NewStopProcessor(stopWords map[string]bool) *StopProcessor

func (*StopProcessor) Name

func (p *StopProcessor) Name() string

func (*StopProcessor) Process

func (p *StopProcessor) Process(tokens []Token) []Token

type SynonymConfig

type SynonymConfig struct {
	Mode          SynonymMode // 模式
	Path          string      // 同义词文件路径
	CaseSensitive bool        // 大小写敏感
}

SynonymConfig 同义词配置

type SynonymMode

type SynonymMode string

SynonymMode 同义词模式

const (
	SynonymBidirectional  SynonymMode = "bidirectional"  // 双向等价
	SynonymUnidirectional SynonymMode = "unidirectional" // 单向映射
)

type SynonymProcessor

type SynonymProcessor struct {
	// contains filtered or unexported fields
}

SynonymProcessor 同义词扩展

func NewSynonymProcessor

func NewSynonymProcessor(cfg SynonymConfig) *SynonymProcessor

NewSynonymProcessor 创建同义词 processor

func (*SynonymProcessor) Name

func (p *SynonymProcessor) Name() string

func (*SynonymProcessor) Process

func (p *SynonymProcessor) Process(tokens []Token) []Token

type Token

type Token struct {
	Term  []byte
	Start int
	End   int
	Pos   int
	POS   string // 词性标注(仅 jieba backend 有)
}

Token 分词结果

func AcquireToken

func AcquireToken() *Token

AcquireToken 从池中获取 Token

type TokenStream

type TokenStream []Token

TokenStream Token 切片

type UniqueProcessor

type UniqueProcessor struct{}

UniqueProcessor 去重:去除 pipeline 中重复的 token

func (*UniqueProcessor) Name

func (p *UniqueProcessor) Name() string

func (*UniqueProcessor) Process

func (p *UniqueProcessor) Process(tokens []Token) []Token

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL