0
0
Fork 0

fix edge ngram output when side=Back and input token len=max

edge condition was incorreclty checked
fixes #523
This commit is contained in:
Marty Schoch 2017-01-30 20:29:20 -05:00
parent d40cfb0870
commit 782dbecfe1
2 changed files with 43 additions and 1 deletions

View File

@ -55,7 +55,7 @@ func (s *EdgeNgramFilter) Filter(input analysis.TokenStream) analysis.TokenStrea
// index of the starting rune for this token
for ngramSize := s.minLength; ngramSize <= s.maxLength; ngramSize++ {
// build an ngram of this size starting at i
if i-ngramSize > 0 {
if i-ngramSize >= 0 {
ngramTerm := analysis.BuildTermFromRunes(runes[i-ngramSize : i])
token := analysis.Token{
Position: token.Position,

View File

@ -135,6 +135,48 @@ func TestEdgeNgramFilter(t *testing.T) {
},
},
},
{
side: BACK,
min: 3,
max: 5,
input: analysis.TokenStream{
&analysis.Token{
Term: []byte("Beryl"),
},
},
output: analysis.TokenStream{
&analysis.Token{
Term: []byte("ryl"),
},
&analysis.Token{
Term: []byte("eryl"),
},
&analysis.Token{
Term: []byte("Beryl"),
},
},
},
{
side: FRONT,
min: 3,
max: 5,
input: analysis.TokenStream{
&analysis.Token{
Term: []byte("Beryl"),
},
},
output: analysis.TokenStream{
&analysis.Token{
Term: []byte("Ber"),
},
&analysis.Token{
Term: []byte("Bery"),
},
&analysis.Token{
Term: []byte("Beryl"),
},
},
},
}
for _, test := range tests {