Class ReverseStringFilter

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public final class ReverseStringFilter
    extends TokenFilter
    Reverse token string, for example "country" => "yrtnuoc".

    If marker is supplied, then tokens will be also prepended by that character. For example, with a marker of \u0001, "country" => "\u0001yrtnuoc". This is useful when implementing efficient leading wildcards search.

    You must specify the required Version compatibility when creating ReverseStringFilter, or when using any of its static methods:

    • As of 3.1, supplementary characters are handled correctly
    • Field Detail

      • START_OF_HEADING_MARKER

        public static final char START_OF_HEADING_MARKER
        Example marker character: U+0001 (START OF HEADING)
        See Also:
        Constant Field Values
      • INFORMATION_SEPARATOR_MARKER

        public static final char INFORMATION_SEPARATOR_MARKER
        Example marker character: U+001F (INFORMATION SEPARATOR ONE)
        See Also:
        Constant Field Values
      • PUA_EC00_MARKER

        public static final char PUA_EC00_MARKER
        Example marker character: U+EC00 (PRIVATE USE AREA: EC00)
        See Also:
        Constant Field Values
      • RTL_DIRECTION_MARKER

        public static final char RTL_DIRECTION_MARKER
        Example marker character: U+200F (RIGHT-TO-LEFT MARK)
        See Also:
        Constant Field Values
    • Constructor Detail

      • ReverseStringFilter

        public ReverseStringFilter​(Version matchVersion,
                                   TokenStream in)
        Create a new ReverseStringFilter that reverses all tokens in the supplied TokenStream.

        The reversed tokens will not be marked.

        Parameters:
        matchVersion - See above
        in - TokenStream to filter
      • ReverseStringFilter

        public ReverseStringFilter​(Version matchVersion,
                                   TokenStream in,
                                   char marker)
        Create a new ReverseStringFilter that reverses and marks all tokens in the supplied TokenStream.

        The reversed tokens will be prepended (marked) by the marker character.

        Parameters:
        matchVersion - See above
        in - TokenStream to filter
        marker - A character used to mark reversed tokens
    • Method Detail

      • incrementToken

        public boolean incrementToken()
                               throws java.io.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:
        java.io.IOException
      • reverse

        public static java.lang.String reverse​(Version matchVersion,
                                               java.lang.String input)
        Reverses the given input string
        Parameters:
        matchVersion - See above
        input - the string to reverse
        Returns:
        the given input string in reversed order
      • reverse

        public static void reverse​(Version matchVersion,
                                   char[] buffer)
        Reverses the given input buffer in-place
        Parameters:
        matchVersion - See above
        buffer - the input char array to reverse
      • reverse

        public static void reverse​(Version matchVersion,
                                   char[] buffer,
                                   int len)
        Partially reverses the given input buffer in-place from offset 0 up to the given length.
        Parameters:
        matchVersion - See above
        buffer - the input char array to reverse
        len - the length in the buffer up to where the buffer should be reversed
      • reverse

        public static void reverse​(Version matchVersion,
                                   char[] buffer,
                                   int start,
                                   int len)
        Partially reverses the given input buffer in-place from the given offset up to the given length.
        Parameters:
        matchVersion - See above
        buffer - the input char array to reverse
        start - the offset from where to reverse the buffer
        len - the length in the buffer up to where the buffer should be reversed