Skip to content

arkadijs/ahocorasick-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Aho-Corasick string matching algorithm

This is an implementation of Aho-Corasick string matching algorithm in Google Go. Based on original BSD licensed implementation by Danny Yoo from UC Berkeley.

BSD license.

Install the package with go command:

go get github.com/arkadijs/ahocorasick-go

and start using it by importing the dependency:

import "github.com/arkadijs/ahocorasick-go"

API

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

The Tree is a root objects that represents compiled state of searched terms.

func New() *Tree

Allocates new empty Tree object.

func (tree *Tree) Add(term string) error

Adds search term to the Tree object. The only error returned is TreeAlreadyPrepared.

func (tree *Tree) Search(content string) <-chan string

Prepares the tree and starts search of all Tree terms in the content. Returns Go channel the found terms could be read from.

tree := ahocorasick.New()
tree.Add("moo")
tree.Add("one")
for term := range tree.Search("one moon ago") {
	fmt.Printf("found %v\n", term)
}

In case you don't need the complete result set or you'd like to cancel the search -- please use SearchContext().

func (tree *Tree) SearchContext(ctx context.Context, content string) <-chan string

Same as Search() but with context.Context.

ctx, cancel := context.WithCancel(context.Background())
ch := tree.SearchContext(ctx, "...")
_, found := <- ch
cancel()

About

Aho-Corasick string matching algorithm in Google Go

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages