(fuzziness interface{}, query string, zer *analysis.Analyzer)
| 90 | } |
| 91 | |
| 92 | func ParseFuzziness(fuzziness interface{}, query string, zer *analysis.Analyzer) int { |
| 93 | val, _ := zutils.ToString(fuzziness) |
| 94 | val = strings.ToUpper(val) |
| 95 | if !strings.HasPrefix(val, "AUTO") { |
| 96 | v, _ := zutils.ToInt(val) |
| 97 | return v |
| 98 | } |
| 99 | |
| 100 | if zer == nil { |
| 101 | zer = analyzer.NewStandardAnalyzer() |
| 102 | } |
| 103 | tokens := zer.Analyze([]byte(query)) |
| 104 | n := 0 |
| 105 | for _, token := range tokens { |
| 106 | if n < len(token.Term) { |
| 107 | n = len(token.Term) |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | n1 := 3 |
| 112 | n2 := 6 |
| 113 | if strings.Contains(val, ":") && strings.Contains(val, ",") { |
| 114 | val := strings.TrimPrefix(val, "AUTO:") |
| 115 | vals := strings.Split(val, ",") |
| 116 | if len(vals) == 2 { |
| 117 | n1, _ = zutils.ToInt(vals[0]) |
| 118 | n2, _ = zutils.ToInt(vals[1]) |
| 119 | if n1 < 2 || n1 >= n2 { |
| 120 | return 0 |
| 121 | } |
| 122 | } |
| 123 | } |
| 124 | |
| 125 | v := 0 |
| 126 | if n >= n2 { |
| 127 | v = 2 |
| 128 | } else if n >= n1 { |
| 129 | v = 1 |
| 130 | } |
| 131 | return v |
| 132 | } |
no test coverage detected