func SearchTokenizer() *Tokenizer {
	t := Tokenizer{}
	t.Add("^\\\"[^\\\"]+\\\"", SearchTokenLiteral)
	t.Add("^\\(", SearchTokenOpenParen)
	t.Add("^\\)", SearchTokenCloseParen)
	t.Add("^(OR|AND|NOT)", SearchTokenOp)
	t.Add("^[\\w]+", SearchTokenLiteral)
	t.Ignore("^ ", SearchTokenWhitespace)
	return &t
}
Create a tokenizer capable of tokenizing filter statements
package godata
const (
	SearchTokenLiteral int = iota
	SearchTokenOpenParen
	SearchTokenCloseParen
	SearchTokenOp
	SearchTokenWhitespace
)
var GlobalSearchTokenizer = SearchTokenizer()
var GlobalSearchParser = SearchParser()
func ParseSearchString(filter string) (*GoDataSearchQuery, error) {
	tokens, err := GlobalSearchTokenizer.Tokenize(filter)
	if err != nil {
		return nil, err
	}
	postfix, err := GlobalSearchParser.InfixToPostfix(tokens)
	if err != nil {
		return nil, err
	}
	tree, err := GlobalSearchParser.PostfixToTree(postfix)
	if err != nil {
		return nil, err
	}
	return &GoDataSearchQuery{tree}, nil
}