This is an automated email from the ASF dual-hosted git repository.

cpoerschke pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 3bed330  SOLR-16112: DefaultSolrHighlighter.doHighlighting to rewrite 
sufficiently (#756)
3bed330 is described below

commit 3bed330993f7fdac5fad77b74ef491c628a6db28
Author: Christine Poerschke <[email protected]>
AuthorDate: Tue Mar 29 11:13:40 2022 +0100

    SOLR-16112: DefaultSolrHighlighter.doHighlighting to rewrite sufficiently 
(#756)
---
 solr/CHANGES.txt                                         |  2 ++
 .../apache/solr/highlight/DefaultSolrHighlighter.java    |  5 +++--
 .../test/org/apache/solr/highlight/HighlighterTest.java  | 16 ++++++++++++++++
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 0ed0e5d..aae1da4 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -53,6 +53,8 @@ Bug Fixes
 
 * SOLR-16089: Fix empty columns in Cloud Node UI Screen when replica is in 
down state. (hossman)
 
+* SOLR-16112: DefaultSolrHighlighter.doHighlighting to Query#rewrite multiple 
times if necessary. (Christine Poerschke)
+
 Other Changes
 ---------------------
 * SOLR-15776: Admin UI is now aware of logged-in user's permissions and can 
adapt accordingly (janhoy)
diff --git 
a/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java 
b/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
index b7992aa..24974d2 100644
--- a/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
+++ b/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
@@ -453,11 +453,12 @@ public class DefaultSolrHighlighter extends 
SolrHighlighter implements PluginInf
             && 
!(Boolean.valueOf(params.get(HighlightParams.USE_PHRASE_HIGHLIGHTER, "true"))
                 && 
Boolean.valueOf(params.get(HighlightParams.HIGHLIGHT_MULTI_TERM, "true")));
 
+    SolrIndexSearcher searcher = req.getSearcher();
+
     if (rewrite) {
-      query = query.rewrite(req.getSearcher().getIndexReader());
+      query = searcher.rewrite(query);
     }
 
-    SolrIndexSearcher searcher = req.getSearcher();
     IndexSchema schema = searcher.getSchema();
 
     // fetch unique key if one exists.
diff --git a/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java 
b/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java
index 5536d6a..1ccc8a7 100644
--- a/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java
+++ b/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java
@@ -845,6 +845,22 @@ public class HighlighterTest extends SolrTestCaseJ4 {
   }
 
   @Test
+  public void testPhraseHighlighterComplexPhrase() {
+    assertU(adoc("t_text", "abc hello xyz", "id", "1"));
+    assertU(commit());
+    assertU(optimize());
+
+    assertQ(
+        req(
+            "q", "{!complexphrase}t_text:\"hello*\"",
+            "hl", "true",
+            "hl.fl", "t_text",
+            "hl.usePhraseHighlighter", "false"),
+        "//lst[@name='highlighting']/lst[@name='1']",
+        "//lst[@name='1']/arr[@name='t_text']/str[.='abc <em>hello</em> 
xyz']");
+  }
+
+  @Test
   public void testGetHighlightFields() {
     HashMap<String, String> args = new HashMap<>();
     args.put("fl", "id score");

Reply via email to