1
0
mirror of https://github.com/fumiama/jieba.git synced 2026-06-05 00:32:51 +08:00

fixed the trie dump/load issue

This commit is contained in:
Wang Bin
2015-02-04 14:34:12 +08:00
parent 9ee7ba2c13
commit c3dce0d4a1

View File

@@ -2,6 +2,7 @@ package jiebago
import ( import (
"bufio" "bufio"
"bytes"
"crypto/md5" "crypto/md5"
"encoding/gob" "encoding/gob"
"fmt" "fmt"
@@ -21,6 +22,53 @@ type Trie struct {
Freq map[string]float64 Freq map[string]float64
} }
func (t Trie) MarshalBinary() ([]byte, error) {
var b bytes.Buffer
enc := gob.NewEncoder(&b)
err := enc.Encode(t.Nodes.ToSlice())
log.Println(err)
if err != nil {
return nil, err
}
err = enc.Encode(t.MinFreq)
if err != nil {
return nil, err
}
err = enc.Encode(t.Total)
if err != nil {
return nil, err
}
err = enc.Encode(t.Freq)
if err != nil {
return nil, err
}
return b.Bytes(), nil
}
func (t *Trie) UnmarshalBinary(data []byte) error {
b := bytes.NewBuffer(data)
dec := gob.NewDecoder(b)
var nodes []interface{}
err := dec.Decode(&nodes)
if err != nil {
return err
}
t.Nodes = mapset.NewSetFromSlice(nodes)
err = dec.Decode(&t.MinFreq)
if err != nil {
return err
}
err = dec.Decode(&t.Total)
if err != nil {
return err
}
err = dec.Decode(&t.Freq)
if err != nil {
return err
}
return nil
}
func newTrie(fileName string) (*Trie, error) { func newTrie(fileName string) (*Trie, error) {
var filePath string var filePath string
var trie *Trie var trie *Trie