package Ġcom . s jk ang . lucene . analysis Ċ Ċ import Ġorg . apache . lucene . analysis . Token Filter Ċ import Ġorg . apache . lucene . analysis . Token Stream Ċ import Ġorg . apache . lucene . analysis . mis cellaneous . Code point Count Filter Ċ import Ġorg . apache . lucene . analysis . token attributes . Char Term Attribute Ċ import Ġorg . apache . lucene . analysis . token attributes . Offset Attribute Ċ import Ġorg . apache . lucene . analysis . token attributes . Position Increment Attribute Ċ import Ġorg . apache . lucene . analysis . token attributes . Position Length Attribute Ċ import Ġjava . io . IOException ĊĊ Ċ class ĠCustom NG ram Token Filter ( input : ĠToken Stream ?) Ġ: ĠToken Filter ( input ) Ġ{ ĊĊĠĠĠ Ġval ĠDEFAULT _ MIN _ N GRAM _ SIZE Ġ= Ġ 1 ĊĠĠĠ Ġval ĠDEFAULT _ MAX _ N GRAM _ SIZE Ġ= Ġ 2 ĊĊĠĠĠ Ġprivate Ġvar Ġmin Gram : ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġmax Gram : ĠInt Ġ= Ġ 2 ĊĊĠĠĠ Ġprivate Ġvar Ġcur Term Buffer : ĠChar Array ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcur Term Length : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcur Term Code Point Count : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcur Gram Size : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcur Pos In cr : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcur Pos : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcur Pos Length : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġend Offset : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġstart Offset : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġval Ġterm Att Ġ= Ġadd Attribute ( Char Term Attribute :: class . java ) ĊĠĠĠ Ġprivate Ġval Ġpos In cr Att Ġ= Ġadd Attribute ( Position Increment Attribute :: class . java ) ĊĊĠĠĠ Ġprivate Ġval Ġoffset Att Ġ= Ġadd Attribute ( Offset Attribute :: class . java ) ĊĠĠĠ Ġprivate Ġval Ġpos L eng Att Ġ= Ġadd Attribute ( Position Length Attribute :: class . java ) ĊĊĠĠĠ Ġ@ Throws ( Illegal AccessException :: class ) ĊĠĠĠ Ġconstructor ( input : ĠToken Stream , Ġmin Gram : ĠInt , Ġmax Gram : ĠInt ): Ġthis ( input ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( Code point Count Filter ( input , Ġmin Gram , Ġ 2 1 4 7 4 8 3 6 4 7 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( min Gram Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegal AccessException (" min Gram Ġmust Ġbe Ġgreater Ġthan Ġzero ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( min Gram Ġ> Ġmax Gram ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegal AccessException (" min Gram Ġmust Ġnot Ġbe Ġgreater Ġthan Ġmax Gram ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . min Gram Ġ= Ġmin Gram ĊĠĠĠĠĠĠĠ Ġthis . max Gram Ġ= Ġmax Gram ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Illegal AccessException :: class ) ĊĠĠĠ Ġfun ĠCustom NG ram Token Filter ( input : ĠToken Stream ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCustom NG ram Token Filter ( input , Ġ 1 , Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġincrement Token (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile ( true ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cur Term Buffer Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! input . increment Token ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Term Buffer Ġ= Ġterm Att . buffer (). clone () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Term Length Ġ= Ġterm Att . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Term Code Point Count Ġ= ĠCharacter . code Point Count ( this . term Att , Ġ 0 , Ġthis . term Att . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Pos In cr Ġ= Ġpos In cr Att . position Increment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Pos Length Ġ= Ġpos L eng Att . position Length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Pos Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Offset Ġ= Ġoffset Att . start Offset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Offset Ġ= Ġoffset Att . end Offset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Gram Size Ġ= Ġmin Gram ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( cur Gram Size Ġ> Ġmax Gram ) Ġ|| Ġ( cur Pos Ġ+ Ġcur Gram Size Ġ> Ġcur Term Code Point Count )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ cur Pos ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Gram Size Ġ= Ġmin Gram ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cur Pos Ġ+ Ġcur Gram Size Ġ<= Ġcur Term Code Point Count Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Attributes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstart : ĠInt Ġ= ĠCharacter . offset By Code Points ( cur Term Buffer , Ġ 0 , Ġcur Term Length , Ġ 0 , Ġcur Pos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġend : ĠInt Ġ= ĠCharacter . offset By Code Points ( cur Term Buffer , Ġ 0 , Ġcur Term Length , Ġstart , Ġcur Gram Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterm Att . copy Buffer ( cur Term Buffer , Ġstart , Ġend Ġ- Ġstart ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos In cr Att . position Increment Ġ= Ġcur Pos In cr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos L eng Att . position Length Ġ= Ġcur Pos Length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Pos In cr Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Att . set Offset ( start Ġ+ Ġstart Offset , Ġend Ġ+ Ġend Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Gram Size ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcur Term Buffer Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . reset () ĊĠĠĠĠĠĠĠ Ġcur Term Buffer Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ