(v interface{})
| 492 | } |
| 493 | |
| 494 | func (t NGramTokenizer) QueryTokens(v interface{}) ([]string, error) { |
| 495 | tokens, err := t.processTokens(v) |
| 496 | if err != nil || tokens == nil { |
| 497 | return []string{}, err |
| 498 | } |
| 499 | |
| 500 | return t.generateNGrams(tokens, func(tokens analysis.TokenStream, addToRes func(string)) { |
| 501 | n := len(tokens) |
| 502 | gram := 3 |
| 503 | if n < 3 { |
| 504 | gram = n |
| 505 | } |
| 506 | |
| 507 | for i := 0; i < n; i++ { |
| 508 | if i+gram <= n { |
| 509 | var builder strings.Builder |
| 510 | for j := 0; j < gram; j++ { |
| 511 | builder.Write(tokens[i+j].Term) |
| 512 | if j != (gram - 1) { |
| 513 | builder.Write([]byte(" ")) |
| 514 | } |
| 515 | } |
| 516 | addToRes(builder.String()) |
| 517 | } |
| 518 | } |
| 519 | }), nil |
| 520 | } |
| 521 | |
| 522 | func (t NGramTokenizer) Name() string { return "ngram" } |
| 523 | func (t NGramTokenizer) Type() string { return "string" } |
no test coverage detected