public class WeightedSpanTermExtractor extends Object
WeightedSpanTerms from a Query based on whether
Terms from the Query are contained in a supplied TokenStream.
In order to support additional, by default unsupported queries, subclasses can override
extract(Query, float, Map) for extracting wrapped or delegate queries and
extractUnknownQuery(Query, Map) to process custom leaf queries:
WeightedSpanTermExtractor extractor = new WeightedSpanTermExtractor() {
protected void extract(Query query, float boost, Map<String, WeightedSpanTerm>terms) throws IOException {
if (query instanceof QueryWrapper) {
extract(((QueryWrapper)query).getQuery(), boost, terms);
} else {
super.extract(query, boost, terms);
}
}
protected void extractUnknownQuery(Query query, Map<String, WeightedSpanTerm> terms) throws IOException {
if (query instanceOf CustomTermQuery) {
Term term = ((CustomTermQuery) query).getTerm();
terms.put(term.field(), new WeightedSpanTerm(1, term.text()));
}
}
};
}
| Modifier and Type | Class and Description |
|---|---|
protected static class |
WeightedSpanTermExtractor.PositionCheckingMap<K>
This class makes sure that if both position sensitive and insensitive
versions of the same term are added, the position insensitive one wins.
|
| Constructor and Description |
|---|
WeightedSpanTermExtractor() |
WeightedSpanTermExtractor(String defaultField) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
collectSpanQueryFields(SpanQuery spanQuery,
Set<String> fieldNames) |
protected void |
extract(Query query,
float boost,
Map<String,WeightedSpanTerm> terms)
|
protected void |
extractUnknownQuery(Query query,
Map<String,WeightedSpanTerm> terms) |
protected void |
extractWeightedSpanTerms(Map<String,WeightedSpanTerm> terms,
SpanQuery spanQuery,
float boost)
|
protected void |
extractWeightedTerms(Map<String,WeightedSpanTerm> terms,
Query query,
float boost)
|
protected boolean |
fieldNameComparator(String fieldNameToCheck)
Necessary to implement matches for queries against
defaultField |
boolean |
getExpandMultiTermQuery() |
protected LeafReaderContext |
getLeafContext() |
TokenStream |
getTokenStream()
Returns the tokenStream which may have been wrapped in a CachingTokenFilter.
|
Map<String,WeightedSpanTerm> |
getWeightedSpanTerms(Query query,
float boost,
TokenStream tokenStream)
Creates a Map of
WeightedSpanTerms from the given Query and TokenStream. |
Map<String,WeightedSpanTerm> |
getWeightedSpanTerms(Query query,
float boost,
TokenStream tokenStream,
String fieldName)
Creates a Map of
WeightedSpanTerms from the given Query and TokenStream. |
Map<String,WeightedSpanTerm> |
getWeightedSpanTermsWithScores(Query query,
float boost,
TokenStream tokenStream,
String fieldName,
IndexReader reader)
Creates a Map of
WeightedSpanTerms from the given Query and TokenStream. |
boolean |
isCachedTokenStream() |
protected boolean |
isQueryUnsupported(Class<? extends Query> clazz) |
boolean |
isUsePayloads() |
protected boolean |
mustRewriteQuery(SpanQuery spanQuery) |
void |
setExpandMultiTermQuery(boolean expandMultiTermQuery) |
protected void |
setMaxDocCharsToAnalyze(int maxDocCharsToAnalyze)
A threshold of number of characters to analyze.
|
void |
setUsePayloads(boolean usePayloads) |
void |
setWrapIfNotCachingTokenFilter(boolean wrap)
By default,
TokenStreams that are not of the type
CachingTokenFilter are wrapped in a CachingTokenFilter to
ensure an efficient reset - if you are already using a different caching
TokenStream impl and you don't want it to be wrapped, set this to
false. |
public WeightedSpanTermExtractor()
public WeightedSpanTermExtractor(String defaultField)
protected void extract(Query query, float boost, Map<String,WeightedSpanTerm> terms) throws IOException
query - Query to extract Terms fromterms - Map to place created WeightedSpanTerms inIOException - If there is a low-level I/O errorprotected void extractUnknownQuery(Query query, Map<String,WeightedSpanTerm> terms) throws IOException
IOExceptionprotected void extractWeightedSpanTerms(Map<String,WeightedSpanTerm> terms, SpanQuery spanQuery, float boost) throws IOException
terms - Map to place created WeightedSpanTerms inspanQuery - SpanQuery to extract Terms fromIOException - If there is a low-level I/O errorprotected void extractWeightedTerms(Map<String,WeightedSpanTerm> terms, Query query, float boost) throws IOException
terms - Map to place created WeightedSpanTerms inquery - Query to extract Terms fromIOException - If there is a low-level I/O errorprotected boolean fieldNameComparator(String fieldNameToCheck)
defaultFieldprotected LeafReaderContext getLeafContext() throws IOException
IOExceptionpublic Map<String,WeightedSpanTerm> getWeightedSpanTerms(Query query, float boost, TokenStream tokenStream) throws IOException
WeightedSpanTerms from the given Query and TokenStream.query - that caused hittokenStream - of text to be highlightedIOException - If there is a low-level I/O errorpublic Map<String,WeightedSpanTerm> getWeightedSpanTerms(Query query, float boost, TokenStream tokenStream, String fieldName) throws IOException
WeightedSpanTerms from the given Query and TokenStream.query - that caused hittokenStream - of text to be highlightedfieldName - restricts Term's used based on field nameIOException - If there is a low-level I/O errorpublic Map<String,WeightedSpanTerm> getWeightedSpanTermsWithScores(Query query, float boost, TokenStream tokenStream, String fieldName, IndexReader reader) throws IOException
WeightedSpanTerms from the given Query and TokenStream. Uses a supplied
IndexReader to properly weight terms (for gradient highlighting).query - that caused hittokenStream - of text to be highlightedfieldName - restricts Term's used based on field namereader - to use for scoringIOException - If there is a low-level I/O errorprotected void collectSpanQueryFields(SpanQuery spanQuery, Set<String> fieldNames)
protected boolean mustRewriteQuery(SpanQuery spanQuery)
public boolean getExpandMultiTermQuery()
public void setExpandMultiTermQuery(boolean expandMultiTermQuery)
public boolean isUsePayloads()
public void setUsePayloads(boolean usePayloads)
public boolean isCachedTokenStream()
public TokenStream getTokenStream()
public void setWrapIfNotCachingTokenFilter(boolean wrap)
TokenStreams that are not of the type
CachingTokenFilter are wrapped in a CachingTokenFilter to
ensure an efficient reset - if you are already using a different caching
TokenStream impl and you don't want it to be wrapped, set this to
false. This setting is ignored when a term vector based TokenStream is supplied,
since it can be reset efficiently.protected final void setMaxDocCharsToAnalyze(int maxDocCharsToAnalyze)
Copyright © 2000-2024 Apache Software Foundation. All Rights Reserved.