Class BaseFragmentsBuilder

java.lang.Object
org.apache.lucene.search.vectorhighlight.BaseFragmentsBuilder
All Implemented Interfaces:
FragmentsBuilder
Direct Known Subclasses:
ScoreOrderFragmentsBuilder, SimpleFragmentsBuilder

public abstract class BaseFragmentsBuilder extends Object implements FragmentsBuilder
Base FragmentsBuilder implementation that supports colored pre/post tags and multivalued fields.

Uses BoundaryScanner to determine fragments.

  • Field Details

    • preTags

      protected String[] preTags
    • postTags

      protected String[] postTags
    • COLORED_PRE_TAGS

      public static final String[] COLORED_PRE_TAGS
    • COLORED_POST_TAGS

      public static final String[] COLORED_POST_TAGS
  • Constructor Details

    • BaseFragmentsBuilder

      protected BaseFragmentsBuilder()
    • BaseFragmentsBuilder

      protected BaseFragmentsBuilder(String[] preTags, String[] postTags)
    • BaseFragmentsBuilder

      protected BaseFragmentsBuilder(BoundaryScanner boundaryScanner)
    • BaseFragmentsBuilder

      protected BaseFragmentsBuilder(String[] preTags, String[] postTags, BoundaryScanner boundaryScanner)
  • Method Details

    • getWeightedFragInfoList

      public abstract List<FieldFragList.WeightedFragInfo> getWeightedFragInfoList(List<FieldFragList.WeightedFragInfo> src)
    • createFragment

      public String createFragment(IndexReader reader, int docId, String fieldName, FieldFragList fieldFragList) throws IOException
      Description copied from interface: FragmentsBuilder
      create a fragment.
      Specified by:
      createFragment in interface FragmentsBuilder
      Parameters:
      reader - IndexReader of the index
      docId - document id to be highlighted
      fieldName - field of the document to be highlighted
      fieldFragList - FieldFragList object
      Returns:
      a created fragment or null when no fragment created
      Throws:
      IOException - If there is a low-level I/O error
    • createFragments

      public String[] createFragments(IndexReader reader, int docId, String fieldName, FieldFragList fieldFragList, int maxNumFragments) throws IOException
      Description copied from interface: FragmentsBuilder
      create multiple fragments.
      Specified by:
      createFragments in interface FragmentsBuilder
      Parameters:
      reader - IndexReader of the index
      docId - document id to be highlighter
      fieldName - field of the document to be highlighted
      fieldFragList - FieldFragList object
      maxNumFragments - maximum number of fragments
      Returns:
      created fragments or null when no fragments created. size of the array can be less than maxNumFragments
      Throws:
      IOException - If there is a low-level I/O error
    • createFragment

      public String createFragment(IndexReader reader, int docId, String fieldName, FieldFragList fieldFragList, String[] preTags, String[] postTags, Encoder encoder) throws IOException
      Description copied from interface: FragmentsBuilder
      create a fragment.
      Specified by:
      createFragment in interface FragmentsBuilder
      Parameters:
      reader - IndexReader of the index
      docId - document id to be highlighted
      fieldName - field of the document to be highlighted
      fieldFragList - FieldFragList object
      preTags - pre-tags to be used to highlight terms
      postTags - post-tags to be used to highlight terms
      encoder - an encoder that generates encoded text
      Returns:
      a created fragment or null when no fragment created
      Throws:
      IOException - If there is a low-level I/O error
    • createFragments

      public String[] createFragments(IndexReader reader, int docId, String fieldName, FieldFragList fieldFragList, int maxNumFragments, String[] preTags, String[] postTags, Encoder encoder) throws IOException
      Description copied from interface: FragmentsBuilder
      create multiple fragments.
      Specified by:
      createFragments in interface FragmentsBuilder
      Parameters:
      reader - IndexReader of the index
      docId - document id to be highlighter
      fieldName - field of the document to be highlighted
      fieldFragList - FieldFragList object
      maxNumFragments - maximum number of fragments
      preTags - pre-tags to be used to highlight terms
      postTags - post-tags to be used to highlight terms
      encoder - an encoder that generates encoded text
      Returns:
      created fragments or null when no fragments created. size of the array can be less than maxNumFragments
      Throws:
      IOException - If there is a low-level I/O error
    • getFields

      protected Field[] getFields(IndexReader reader, int docId, String fieldName) throws IOException
      Throws:
      IOException
    • makeFragment

      protected String makeFragment(StringBuilder buffer, int[] index, Field[] values, FieldFragList.WeightedFragInfo fragInfo, String[] preTags, String[] postTags, Encoder encoder)
    • getFragmentSourceMSO

      protected String getFragmentSourceMSO(StringBuilder buffer, int[] index, Field[] values, int startOffset, int endOffset, int[] modifiedStartOffset)
    • getFragmentSource

      protected String getFragmentSource(StringBuilder buffer, int[] index, Field[] values, int startOffset, int endOffset)
    • discreteMultiValueHighlighting

      protected List<FieldFragList.WeightedFragInfo> discreteMultiValueHighlighting(List<FieldFragList.WeightedFragInfo> fragInfos, Field[] fields)
    • setMultiValuedSeparator

      public void setMultiValuedSeparator(char separator)
    • getMultiValuedSeparator

      public char getMultiValuedSeparator()
    • isDiscreteMultiValueHighlighting

      public boolean isDiscreteMultiValueHighlighting()
    • setDiscreteMultiValueHighlighting

      public void setDiscreteMultiValueHighlighting(boolean discreteMultiValueHighlighting)
    • getPreTag

      protected String getPreTag(int num)
    • getPostTag

      protected String getPostTag(int num)
    • getPreTag

      protected String getPreTag(String[] preTags, int num)
    • getPostTag

      protected String getPostTag(String[] postTags, int num)