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 java.lang.Object implements FragmentsBuilder
Base FragmentsBuilder implementation that supports colored pre/post tags and multivalued fields.Uses
BoundaryScanner
to determine fragments.
-
-
Field Summary
Fields Modifier and Type Field Description private BoundaryScanner
boundaryScanner
static java.lang.String[]
COLORED_POST_TAGS
static java.lang.String[]
COLORED_PRE_TAGS
private boolean
discreteMultiValueHighlighting
private char
multiValuedSeparator
private static Encoder
NULL_ENCODER
protected java.lang.String[]
postTags
protected java.lang.String[]
preTags
-
Constructor Summary
Constructors Modifier Constructor Description protected
BaseFragmentsBuilder()
protected
BaseFragmentsBuilder(java.lang.String[] preTags, java.lang.String[] postTags)
protected
BaseFragmentsBuilder(java.lang.String[] preTags, java.lang.String[] postTags, BoundaryScanner boundaryScanner)
protected
BaseFragmentsBuilder(BoundaryScanner boundaryScanner)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description (package private) static java.lang.Object
checkTagsArgument(java.lang.Object tags)
java.lang.String
createFragment(IndexReader reader, int docId, java.lang.String fieldName, FieldFragList fieldFragList)
create a fragment.java.lang.String
createFragment(IndexReader reader, int docId, java.lang.String fieldName, FieldFragList fieldFragList, java.lang.String[] preTags, java.lang.String[] postTags, Encoder encoder)
create a fragment.java.lang.String[]
createFragments(IndexReader reader, int docId, java.lang.String fieldName, FieldFragList fieldFragList, int maxNumFragments)
create multiple fragments.java.lang.String[]
createFragments(IndexReader reader, int docId, java.lang.String fieldName, FieldFragList fieldFragList, int maxNumFragments, java.lang.String[] preTags, java.lang.String[] postTags, Encoder encoder)
create multiple fragments.protected java.util.List<FieldFragList.WeightedFragInfo>
discreteMultiValueHighlighting(java.util.List<FieldFragList.WeightedFragInfo> fragInfos, Field[] fields)
protected Field[]
getFields(IndexReader reader, int docId, java.lang.String fieldName)
protected java.lang.String
getFragmentSource(java.lang.StringBuilder buffer, int[] index, Field[] values, int startOffset, int endOffset)
protected java.lang.String
getFragmentSourceMSO(java.lang.StringBuilder buffer, int[] index, Field[] values, int startOffset, int endOffset, int[] modifiedStartOffset)
char
getMultiValuedSeparator()
protected java.lang.String
getPostTag(int num)
protected java.lang.String
getPostTag(java.lang.String[] postTags, int num)
protected java.lang.String
getPreTag(int num)
protected java.lang.String
getPreTag(java.lang.String[] preTags, int num)
abstract java.util.List<FieldFragList.WeightedFragInfo>
getWeightedFragInfoList(java.util.List<FieldFragList.WeightedFragInfo> src)
boolean
isDiscreteMultiValueHighlighting()
protected java.lang.String
makeFragment(java.lang.StringBuilder buffer, int[] index, Field[] values, FieldFragList.WeightedFragInfo fragInfo, java.lang.String[] preTags, java.lang.String[] postTags, Encoder encoder)
void
setDiscreteMultiValueHighlighting(boolean discreteMultiValueHighlighting)
void
setMultiValuedSeparator(char separator)
-
-
-
Field Detail
-
preTags
protected java.lang.String[] preTags
-
postTags
protected java.lang.String[] postTags
-
COLORED_PRE_TAGS
public static final java.lang.String[] COLORED_PRE_TAGS
-
COLORED_POST_TAGS
public static final java.lang.String[] COLORED_POST_TAGS
-
multiValuedSeparator
private char multiValuedSeparator
-
boundaryScanner
private final BoundaryScanner boundaryScanner
-
discreteMultiValueHighlighting
private boolean discreteMultiValueHighlighting
-
NULL_ENCODER
private static final Encoder NULL_ENCODER
-
-
Constructor Detail
-
BaseFragmentsBuilder
protected BaseFragmentsBuilder()
-
BaseFragmentsBuilder
protected BaseFragmentsBuilder(java.lang.String[] preTags, java.lang.String[] postTags)
-
BaseFragmentsBuilder
protected BaseFragmentsBuilder(BoundaryScanner boundaryScanner)
-
BaseFragmentsBuilder
protected BaseFragmentsBuilder(java.lang.String[] preTags, java.lang.String[] postTags, BoundaryScanner boundaryScanner)
-
-
Method Detail
-
checkTagsArgument
static java.lang.Object checkTagsArgument(java.lang.Object tags)
-
getWeightedFragInfoList
public abstract java.util.List<FieldFragList.WeightedFragInfo> getWeightedFragInfoList(java.util.List<FieldFragList.WeightedFragInfo> src)
-
createFragment
public java.lang.String createFragment(IndexReader reader, int docId, java.lang.String fieldName, FieldFragList fieldFragList) throws java.io.IOException
Description copied from interface:FragmentsBuilder
create a fragment.- Specified by:
createFragment
in interfaceFragmentsBuilder
- Parameters:
reader
- IndexReader of the indexdocId
- document id to be highlightedfieldName
- field of the document to be highlightedfieldFragList
- FieldFragList object- Returns:
- a created fragment or null when no fragment created
- Throws:
java.io.IOException
- If there is a low-level I/O error
-
createFragments
public java.lang.String[] createFragments(IndexReader reader, int docId, java.lang.String fieldName, FieldFragList fieldFragList, int maxNumFragments) throws java.io.IOException
Description copied from interface:FragmentsBuilder
create multiple fragments.- Specified by:
createFragments
in interfaceFragmentsBuilder
- Parameters:
reader
- IndexReader of the indexdocId
- document id to be highlighterfieldName
- field of the document to be highlightedfieldFragList
- FieldFragList objectmaxNumFragments
- maximum number of fragments- Returns:
- created fragments or null when no fragments created. size of the array can be less than maxNumFragments
- Throws:
java.io.IOException
- If there is a low-level I/O error
-
createFragment
public java.lang.String createFragment(IndexReader reader, int docId, java.lang.String fieldName, FieldFragList fieldFragList, java.lang.String[] preTags, java.lang.String[] postTags, Encoder encoder) throws java.io.IOException
Description copied from interface:FragmentsBuilder
create a fragment.- Specified by:
createFragment
in interfaceFragmentsBuilder
- Parameters:
reader
- IndexReader of the indexdocId
- document id to be highlightedfieldName
- field of the document to be highlightedfieldFragList
- FieldFragList objectpreTags
- pre-tags to be used to highlight termspostTags
- post-tags to be used to highlight termsencoder
- an encoder that generates encoded text- Returns:
- a created fragment or null when no fragment created
- Throws:
java.io.IOException
- If there is a low-level I/O error
-
createFragments
public java.lang.String[] createFragments(IndexReader reader, int docId, java.lang.String fieldName, FieldFragList fieldFragList, int maxNumFragments, java.lang.String[] preTags, java.lang.String[] postTags, Encoder encoder) throws java.io.IOException
Description copied from interface:FragmentsBuilder
create multiple fragments.- Specified by:
createFragments
in interfaceFragmentsBuilder
- Parameters:
reader
- IndexReader of the indexdocId
- document id to be highlighterfieldName
- field of the document to be highlightedfieldFragList
- FieldFragList objectmaxNumFragments
- maximum number of fragmentspreTags
- pre-tags to be used to highlight termspostTags
- post-tags to be used to highlight termsencoder
- 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:
java.io.IOException
- If there is a low-level I/O error
-
getFields
protected Field[] getFields(IndexReader reader, int docId, java.lang.String fieldName) throws java.io.IOException
- Throws:
java.io.IOException
-
makeFragment
protected java.lang.String makeFragment(java.lang.StringBuilder buffer, int[] index, Field[] values, FieldFragList.WeightedFragInfo fragInfo, java.lang.String[] preTags, java.lang.String[] postTags, Encoder encoder)
-
getFragmentSourceMSO
protected java.lang.String getFragmentSourceMSO(java.lang.StringBuilder buffer, int[] index, Field[] values, int startOffset, int endOffset, int[] modifiedStartOffset)
-
getFragmentSource
protected java.lang.String getFragmentSource(java.lang.StringBuilder buffer, int[] index, Field[] values, int startOffset, int endOffset)
-
discreteMultiValueHighlighting
protected java.util.List<FieldFragList.WeightedFragInfo> discreteMultiValueHighlighting(java.util.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 java.lang.String getPreTag(int num)
-
getPostTag
protected java.lang.String getPostTag(int num)
-
getPreTag
protected java.lang.String getPreTag(java.lang.String[] preTags, int num)
-
getPostTag
protected java.lang.String getPostTag(java.lang.String[] postTags, int num)
-
-