github.com/balzaczyy/golucene@v0.0.0-20151210033525-d0be9ee89713/analysis/core/lowercase.go (about) 1 package core 2 3 import ( 4 . "github.com/balzaczyy/golucene/analysis/util" 5 . "github.com/balzaczyy/golucene/core/analysis" 6 . "github.com/balzaczyy/golucene/core/analysis/tokenattributes" 7 "github.com/balzaczyy/golucene/core/util" 8 ) 9 10 // core/LowerCaseFilter.java 11 12 /* 13 Normalizes token text to lower case. 14 15 You may specify the Version 16 compatibility when creating LowerCaseFilter: 17 18 - As of 3.1, supplementary characters are properly lowercased. 19 */ 20 type LowerCaseFilter struct { 21 *TokenFilter 22 input TokenStream 23 charUtils *CharacterUtils 24 termAtt CharTermAttribute 25 } 26 27 /* Create a new LowerCaseFilter, that normalizes token text to lower case. */ 28 func NewLowerCaseFilter(matchVersion util.Version, in TokenStream) *LowerCaseFilter { 29 ans := &LowerCaseFilter{ 30 TokenFilter: NewTokenFilter(in), 31 input: in, 32 charUtils: GetCharacterUtils(matchVersion), 33 } 34 ans.termAtt = ans.Attributes().Add("CharTermAttribute").(CharTermAttribute) 35 return ans 36 } 37 38 func (f *LowerCaseFilter) IncrementToken() (bool, error) { 39 ok, err := f.input.IncrementToken() 40 if err != nil { 41 return false, err 42 } 43 if ok { 44 f.charUtils.ToLowerCase(f.termAtt.Buffer()[:f.termAtt.Length()]) 45 return true, nil 46 } 47 return false, nil 48 }