Class CommonGramsFilter
Construct bigrams for frequently occurring terms while indexing. Single terms are still indexed too, with bigrams overlaid. This is achieved through the use of PositionIncrement. Bigrams have a type of GRAM_TYPE Example:
- input:"the quick brown fox"
- output:|"the","the-quick"|"brown"|"fox"|
- "the-quick" has a position increment of 0 so it is in the same position as "the" "the-quick" has a term.type() of "gram"
Inheritance
Implements
Inherited Members
Namespace: Lucene.Net.Analysis.CommonGrams
Assembly: Lucene.Net.Analysis.Common.dll
Syntax
public sealed class CommonGramsFilter : TokenFilter, IDisposableConstructors
| Improve this Doc View SourceCommonGramsFilter(LuceneVersion, TokenStream, CharArraySet)
Construct a token stream filtering the given input using a Set of common words to create bigrams. Outputs both unigrams with position increment and bigrams with position increment 0 type=gram where one or both of the words in a potential bigram are in the set of common words .
Declaration
public CommonGramsFilter(LuceneVersion matchVersion, TokenStream input, CharArraySet commonWords)Parameters
| Type | Name | Description | 
|---|---|---|
| Lucene.Net.Util.LuceneVersion | matchVersion | lucene compatibility version | 
| Lucene.Net.Analysis.TokenStream | input | Lucene.Net.Analysis.TokenStream input in filter chain | 
| CharArraySet | commonWords | The set of common words. | 
Fields
| Improve this Doc View SourceGRAM_TYPE
Declaration
public const string GRAM_TYPE = "gram"Field Value
| Type | Description | 
|---|---|
| System.String | 
Methods
| Improve this Doc View SourceIncrementToken()
Inserts bigrams for common words into a token stream. For each input token, output the token. If the token and/or the following token are in the list of common words also output a bigram with position increment 0 and type="gram"
TODO:Consider adding an option to not emit unigram stopwords as in CDL XTF BigramStopFilter, CommonGramsQueryFilter would need to be changed to work with this.
TODO: Consider optimizing for the case of three commongrams i.e "man of the year" normally produces 3 bigrams: "man-of", "of-the", "the-year" but with proper management of positions we could eliminate the middle bigram "of-the"and save a disk seek and a whole set of position lookups.
Declaration
public override bool IncrementToken()Returns
| Type | Description | 
|---|---|
| System.Boolean | 
Overrides
Reset()
This method is called by a consumer before it begins consumption using IncrementToken().
Resets this stream to a clean state. Stateful implementations must implement this method so that they can be reused, just as if they had been created fresh.
If you override this method, always call base.Reset(), otherwise
some internal state will not be correctly reset (e.g., Lucene.Net.Analysis.Tokenizer will
throw System.InvalidOperationException on further usage).
Declaration
public override void Reset()Overrides
Remarks
NOTE:
The default implementation chains the call to the input Lucene.Net.Analysis.TokenStream, so
be sure to call base.Reset() when overriding this method.