aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorLester Solbakken <lesters@oath.com>2018-09-05 14:36:22 +0200
committerLester Solbakken <lesters@oath.com>2018-09-05 14:58:53 +0200
commitae9d491d6da4200231b12df1670355070866ec75 (patch)
tree15e3f639fe1091ad5b85d82bfd831c3ee7216bde /searchcore
parent015a58b6ac87d84fc47a5e6ca563fdc64c7caf79 (diff)
Add query override of rerank-count
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp5
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/matcher.cpp7
2 files changed, 8 insertions, 4 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp b/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp
index a00a90d7a10..4c04c23b35b 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp
@@ -214,8 +214,9 @@ MatchToolsFactory::createDiversifier() const
LOG(warning, "Skipping diversity due to no %s attribute.", _diversityParams.attribute.c_str());
return std::unique_ptr<IDiversifier>();
}
- size_t max_per_group = _rankSetup.getHeapSize()/_diversityParams.min_groups;
- return DiversityFilter::create(*attr, _rankSetup.getHeapSize(), max_per_group, _diversityParams.min_groups,
+ uint32_t heapSize = hitcollector::HeapSize::lookup(_queryEnv.getProperties(), _rankSetup.getHeapSize());
+ size_t max_per_group = heapSize/_diversityParams.min_groups;
+ return DiversityFilter::create(*attr, heapSize, max_per_group, _diversityParams.min_groups,
_diversityParams.cutoff_strategy == DiversityParams::CutoffStrategy::STRICT);
}
diff --git a/searchcore/src/vespa/searchcore/proton/matching/matcher.cpp b/searchcore/src/vespa/searchcore/proton/matching/matcher.cpp
index be0a720f1c1..94159d0bf2a 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/matcher.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/matcher.cpp
@@ -19,6 +19,7 @@
LOG_SETUP(".proton.matching.matcher");
using search::fef::Properties;
+using namespace search::fef::indexproperties;
using namespace search::fef::indexproperties::matching;
using namespace search::engine;
using namespace search::grouping;
@@ -242,14 +243,16 @@ Matcher::match(const SearchRequest &request, vespalib::ThreadBundle &threadBundl
return reply;
}
- MatchParams params(searchContext.getDocIdLimit(), _rankSetup->getHeapSize(), _rankSetup->getArraySize(),
+ const Properties & rankProperties = request.propertiesMap.rankProperties();
+ uint32_t heapSize = hitcollector::HeapSize::lookup(rankProperties, _rankSetup->getHeapSize());
+
+ MatchParams params(searchContext.getDocIdLimit(), heapSize, _rankSetup->getArraySize(),
_rankSetup->getRankScoreDropLimit(), request.offset, request.maxhits,
!_rankSetup->getSecondPhaseRank().empty(), !willNotNeedRanking(request, groupingContext));
ResultProcessor rp(attrContext, metaStore, sessionMgr, groupingContext, sessionId,
request.sortSpec, params.offset, params.hits, request.should_drop_sort_data());
- const Properties & rankProperties = request.propertiesMap.rankProperties();
size_t numThreadsPerSearch = computeNumThreadsPerSearch(mtf->estimate(), rankProperties);
LimitedThreadBundleWrapper limitedThreadBundle(threadBundle, numThreadsPerSearch);
MatchMaster master;