func simpleExample() { suggester := suggest.Suggest{} query := "fgerp" commands := []string{"cat", "mkdir", "fgrep", "history"} match, err := suggester.AutocorrectAgainst(query, commands) if err == nil { fmt.Println("Autocorrected to:", match) // "fgrep" } suggester.Commands = commands if match, err := suggester.Autocorrect(query); err == nil { fmt.Println("Also Autocorrected to:", match) // "fgrep" } query = "println" commands = []string{"Fprint", "Fprintf", "Fprintln", "Sprintf", "Print", "Printf", "Println"} suggester.Options.SimilarityMinimum = 8 fmt.Printf("Searching %v for %s\n", query, commands) if result, err := suggester.QueryAgainst(query, commands); err == nil { if !result.Success() { fmt.Println("No close matches") } else { fmt.Println("Similar matches:", result.Matches) // [Println Fprintln] fmt.Println("Autocorrect:", result.Autocorrect) // Println } } os.Exit(0) }
func TestQueryAgainst(t *testing.T) { s := suggest.Suggest{} for _, tt := range queryTests { query := tt.query result, err := s.QueryAgainst(query, tt.commands) actual := result.Matches if err != nil { t.Errorf("TestQueryAgainst(%v) returned error %v", tt.query, err) continue } if !reflect.DeepEqual(actual, tt.expected) { t.Errorf("TestQueryAgainst(%q, %v) = %q, want %q", tt.query, tt.commands, actual, tt.expected) } } }
func simpleExample2() { suggester := suggest.Suggest{} query := "fgerp" commands := []string{"cat", "mkdir", "fgrep", "history"} suggester.Commands = commands if match, err := suggester.Autocorrect("mkdri"); err == nil { fmt.Println("Autocorrected to:", match) // "mkdir" } // Alternate autocorrect usage pattern match, _ := suggester.AutocorrectAgainst(query, commands) if match != "" { fmt.Println("Autocorrected to:", match) // "fgrep" } // Alternate usage pattern query = "printf" commands = []string{"Fprint", "Fprintf", "Fprintln", "Sprintf", "Printf", "Println"} suggester.Options.SimilarityMinimum = 8 fmt.Printf("Searching %v in %s\n", query, commands) if result, err := suggester.QueryAgainst(query, commands); err == nil { if !result.Success() { fmt.Println("No close matches") } else { fmt.Println("Similar matches:", result.Matches) // [Println Fprintln] fmt.Println("Autocorrect:", result.Autocorrect) // Println } } }