SOLR-11595: optimize SolrIndexSearcher.collectionStatistics

This commit is contained in:
David Smiley 2017-11-14 16:58:49 -05:00
parent d77d54b1a6
commit 3923e9fba3
2 changed files with 12 additions and 1 deletions

View File

@ -123,6 +123,9 @@ Optimizations
* SOLR-11641: Change `frange` to default to `cost=100` so default behavior is to PostFilter if user specifies * SOLR-11641: Change `frange` to default to `cost=100` so default behavior is to PostFilter if user specifies
`cache=false` (hossman) `cache=false` (hossman)
* SOLR-11595: SolrIndexSearcher.localCollectionStatistics is now faster by leveraging an existing
cached MultiFields. Noticeable when many fields are searched. (David Smiley)
Other Changes Other Changes
---------------------- ----------------------
* SOLR-11478: Solr should remove itself from live_nodes in zk immediately on shutdown. (Cao Manh Dat) * SOLR-11478: Solr should remove itself from live_nodes in zk immediately on shutdown. (Cao Manh Dat)

View File

@ -367,7 +367,15 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
} }
public CollectionStatistics localCollectionStatistics(String field) throws IOException { public CollectionStatistics localCollectionStatistics(String field) throws IOException {
return super.collectionStatistics(field); // Could call super.collectionStatistics(field); but we can use a cached MultiTerms
assert field != null;
// SlowAtomicReader has a cache of MultiTerms
Terms terms = getSlowAtomicReader().terms(field);
if (terms == null) {
return null;
}
return new CollectionStatistics(field, reader.maxDoc(),
terms.getDocCount(), terms.getSumTotalTermFreq(), terms.getSumDocFreq());
} }
public boolean isCachingEnabled() { public boolean isCachingEnabled() {