keyword-extraction/trie.go

33 lines
590 B
Go
Raw Permalink Normal View History

package extractor
type Node struct {
children map[rune]*Node // 使用 map 存储叶子节点,key:'char' ,value: *Node
exist map[int]struct{} // 关键词节点是一个完整的匹配词,记录其长度
failure *Node // 记录失败指针
}
func newNode() *Node {
return &Node{
children: make(map[rune]*Node),
exist: make(map[int]struct{}),
}
}
type Match struct {
match string
start int
end int
}
func (m *Match) MatchString() string {
return m.match
}
func (m *Match) Start() int {
return m.start
}
func (m *Match) End() int {
return m.end
}