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  }