mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-17 18:35:25 +00:00
only call terms lookup once and not per segment
This commit is contained in:
parent
e0846448e9
commit
f3c068f637
@ -145,6 +145,8 @@ public class IndicesTermsFilterCache extends AbstractComponent {
|
|||||||
private final TermsLookup lookup;
|
private final TermsLookup lookup;
|
||||||
private final CacheKeyFilter.Key cacheKey;
|
private final CacheKeyFilter.Key cacheKey;
|
||||||
private final IndicesTermsFilterCache cache;
|
private final IndicesTermsFilterCache cache;
|
||||||
|
boolean termsFilterCalled;
|
||||||
|
private Filter termsFilter;
|
||||||
|
|
||||||
LookupTermsFilter(TermsLookup lookup, CacheKeyFilter.Key cacheKey, IndicesTermsFilterCache cache) {
|
LookupTermsFilter(TermsLookup lookup, CacheKeyFilter.Key cacheKey, IndicesTermsFilterCache cache) {
|
||||||
this.lookup = lookup;
|
this.lookup = lookup;
|
||||||
@ -154,9 +156,12 @@ public class IndicesTermsFilterCache extends AbstractComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException {
|
public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException {
|
||||||
Filter filter = cache.termsFilter(cacheKey, lookup);
|
// only call the terms filter once per execution (across segments per single search request)
|
||||||
if (filter == null) return null;
|
if (!termsFilterCalled) {
|
||||||
return filter.getDocIdSet(context, acceptDocs);
|
termsFilter = cache.termsFilter(cacheKey, lookup);
|
||||||
|
}
|
||||||
|
if (termsFilter == null) return null;
|
||||||
|
return termsFilter.getDocIdSet(context, acceptDocs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user