You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2017/04/25 13:59:34 UTC
[07/17] lucene-solr:jira/solr-8668: SOLR-9217: delay JoinUtil call to
createWeight for score join
SOLR-9217: delay JoinUtil call to createWeight for score join
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a07ac633
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a07ac633
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a07ac633
Branch: refs/heads/jira/solr-8668
Commit: a07ac63357c3ecd817e85a5f392a558709998d05
Parents: 99ce234
Author: Mikhail Khludnev <mk...@apache.org>
Authored: Sun Apr 23 00:28:20 2017 +0300
Committer: Mikhail Khludnev <mk...@apache.org>
Committed: Sun Apr 23 01:30:23 2017 +0300
----------------------------------------------------------------------
solr/CHANGES.txt | 3 +++
.../apache/solr/search/join/ScoreJoinQParserPlugin.java | 11 ++++++-----
.../apache/solr/search/join/TestScoreJoinQPNoScore.java | 7 +++----
3 files changed, 12 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a07ac633/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index c1bede4..5ba38d9 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -187,6 +187,9 @@ Optimizations
* SOLR-10499: facet.heatmap is now significantly faster when the docset (base query) matches everything and there are no
deleted docs. It's also faster when the docset matches a small fraction of the index or none. (David Smiley)
+* SOLR-9217: Reduced heap consumption for filter({!join ... score=...})
+ (Andrey Kudryavtsev, Gopikannan Venugopalsamy via Mikhail Khludnev)
+
Bug Fixes
----------------------
* SOLR-10281: ADMIN_PATHS is duplicated in two places and inconsistent. This can cause automatic
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a07ac633/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
index edccc88..a49195c 100644
--- a/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
@@ -21,8 +21,9 @@ import java.util.Map;
import java.util.Objects;
import org.apache.lucene.index.DocValuesType;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
+import org.apache.lucene.search.Weight;
import org.apache.lucene.search.join.JoinUtil;
import org.apache.lucene.search.join.ScoreMode;
import org.apache.solr.cloud.ZkController;
@@ -86,7 +87,7 @@ public class ScoreJoinQParserPlugin extends QParserPlugin {
}
@Override
- public Query rewrite(IndexReader reader) throws IOException {
+ public Weight createWeight(IndexSearcher searcher, boolean needsScores, float boost) throws IOException {
SolrRequestInfo info = SolrRequestInfo.getRequestInfo();
CoreContainer container = info.getReq().getCore().getCoreContainer();
@@ -106,7 +107,7 @@ public class ScoreJoinQParserPlugin extends QParserPlugin {
fromCore.close();
fromHolder.decref();
}
- return joinQuery.rewrite(reader);
+ return joinQuery.rewrite(searcher.getIndexReader()).createWeight(searcher, needsScores, boost);
}
@Override
@@ -156,11 +157,11 @@ public class ScoreJoinQParserPlugin extends QParserPlugin {
}
@Override
- public Query rewrite(IndexReader reader) throws IOException {
+ public Weight createWeight(IndexSearcher searcher, boolean needsScores, float boost) throws IOException {
SolrRequestInfo info = SolrRequestInfo.getRequestInfo();
final Query jq = JoinUtil.createJoinQuery(fromField, true,
toField, fromQuery, info.getReq().getSearcher(), scoreMode);
- return jq.rewrite(reader);
+ return jq.rewrite(searcher.getIndexReader()).createWeight(searcher, needsScores, boost);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a07ac633/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPNoScore.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPNoScore.java b/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPNoScore.java
index 3b23be8..0d9801e 100644
--- a/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPNoScore.java
+++ b/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPNoScore.java
@@ -170,10 +170,9 @@ public class TestScoreJoinQPNoScore extends SolrTestCaseJ4 {
{
final Query query = QParser.getParser(req.getParams().get("q"), req).getQuery();
final Query rewrittenQuery = query.rewrite(req.getSearcher().getIndexReader());
- assertTrue(
- rewrittenQuery+" should be Lucene's",
- rewrittenQuery.getClass().getPackage().getName()
- .startsWith("org.apache.lucene"));
+ assertEquals(rewrittenQuery+" is expected to be from Solr",
+ ScoreJoinQParserPlugin.class.getPackage().getName(),
+ rewrittenQuery.getClass().getPackage().getName());
}
{
final Query query = QParser.getParser(