All Implemented Interfaces:
Closeable, AutoCloseable, Unwrappable<TokenStream>

public final class CapitalizationFilter extends TokenFilter
A filter to apply normal capitalization rules to Tokens. It will make the first letter capital and the rest lower case.

This filter is particularly useful to build nice looking facet parameters. This filter is not appropriate if you intend to use a prefix query.

  • Field Details

    • DEFAULT_MAX_WORD_COUNT

      public static final int DEFAULT_MAX_WORD_COUNT
      See Also:
    • DEFAULT_MAX_TOKEN_LENGTH

      public static final int DEFAULT_MAX_TOKEN_LENGTH
      See Also:
    • onlyFirstWord

      private final boolean onlyFirstWord
    • keep

      private final CharArraySet keep
    • forceFirstLetter

      private final boolean forceFirstLetter
    • okPrefix

      private final Collection<char[]> okPrefix
    • minWordLength

      private final int minWordLength
    • maxWordCount

      private final int maxWordCount
    • maxTokenLength

      private final int maxTokenLength
    • termAtt

      private final CharTermAttribute termAtt
  • Constructor Details

    • CapitalizationFilter

      public CapitalizationFilter(TokenStream in)
    • CapitalizationFilter

      public CapitalizationFilter(TokenStream in, boolean onlyFirstWord, CharArraySet keep, boolean forceFirstLetter, Collection<char[]> okPrefix, int minWordLength, int maxWordCount, int maxTokenLength)
      Creates a CapitalizationFilter with the specified parameters.
      Parameters:
      in - input tokenstream
      onlyFirstWord - should each word be capitalized or all of the words?
      keep - a keep word list. Each word that should be kept separated by whitespace.
      forceFirstLetter - Force the first letter to be capitalized even if it is in the keep list.
      okPrefix - do not change word capitalization if a word begins with something in this list.
      minWordLength - how long the word needs to be to get capitalization applied. If the minWordLength is 3, "and" > "And" but "or" stays "or".
      maxWordCount - if the token contains more then maxWordCount words, the capitalization is assumed to be correct.
      maxTokenLength - ???
  • Method Details

    • incrementToken

      public boolean incrementToken() throws IOException
      Description copied from class: TokenStream
      Consumers (i.e., IndexWriter) use this method to advance the stream to the next token. Implementing classes must implement this method and update the appropriate AttributeImpls with the attributes of the next token.

      The producer must make no assumptions about the attributes after the method has been returned: the caller may arbitrarily change it. If the producer needs to preserve the state for subsequent calls, it can use AttributeSource.captureState() to create a copy of the current attribute state.

      This method is called for every token of a document, so an efficient implementation is crucial for good performance. To avoid calls to AttributeSource.addAttribute(Class) and AttributeSource.getAttribute(Class), references to all AttributeImpls that this stream uses should be retrieved during instantiation.

      To ensure that filters and consumers know which attributes are available, the attributes must be added during instantiation. Filters and consumers are not required to check for availability of attributes in TokenStream.incrementToken().

      Specified by:
      incrementToken in class TokenStream
      Returns:
      false for end of stream; true otherwise
      Throws:
      IOException
    • processWord

      private void processWord(char[] buffer, int offset, int length, int wordCount)