Port of Sudachi's dartsclone library to Go.
package main
import (
"os"
"github.com/ikawaha/dartsclone"
)
func main() {
keys := []string{
"電気",
"電気通信",
"電気通信大学",
"電気通信大学大学院",
"電気通信大学大学院大学",
}
// Build
builder := dartsclone.NewBuilder(nil)
if err := builder.Build(keys, nil); err != nil {
panic(err)
}
// Save
f, err := os.Create("my-double-array-file")
if err != nil {
panic(err)
}
builder.WriteTo(f)
f.Close()
}
package main
import (
"fmt"
"github.com/ikawaha/dartsclone"
)
func main() {
trie, err := dartsclone.Open("my-double-array-file")
if err != nil {
panic(err)
}
ret, err := trie.CommonPrefixSearch("電気通信大学大学院大学", 0)
for i := 0; i < len(ret); i++ {
fmt.Printf("id=%d, common prefix=%s\n", ret[i][0], "電気通信大学大学院大学"[0:ret[i][1]])
}
}
id=0, common prefix=電気
id=1, common prefix=電気通信
id=2, common prefix=電気通信大学
id=3, common prefix=電気通信大学大学院
id=4, common prefix=電気通信大学大学院大学
- Build Tags : mmap
- Support OS : linux, osx, windows
$ go build -tags mmap ./...
package main
import (
"fmt"
"github.com/ikawaha/dartsclone"
)
func main() {
trie, err := dartsclone.OpenMmaped("my-double-array-file") // ← ★
if err != nil {
panic(err)
}
defer trie.Close() // ← ★
ret, err := trie.CommonPrefixSearch("電気通信大学大学院大学", 0)
for i := 0; i < len(ret); i++ {
fmt.Printf("id=%d, common prefix=%s\n", ret[i][0], "電気通信大学大学院大学"[0:ret[i][1]])
}
}