public class WeightedSpanTermExtractor extends Object
WeightedSpanTerm
s from a Query
based on whether
Term
s 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,
TokenStream s 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
IOException
protected 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)
defaultField
protected LeafReaderContext getLeafContext() throws IOException
IOException
public 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)
TokenStream
s 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-2019 Apache Software Foundation. All Rights Reserved.