From e20d53a77fcd6b4a8aafbfabfe9cc48dc97a9ee9 Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Tue, 2 Jul 2013 09:07:00 -0400
Subject: [PATCH] Further refinements to hl.q logic. Thanks to David Maus for
 refactoring suggestions.

---
 .../src/VuFindSearch/Backend/Solr/QueryBuilder.php   | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/module/VuFindSearch/src/VuFindSearch/Backend/Solr/QueryBuilder.php b/module/VuFindSearch/src/VuFindSearch/Backend/Solr/QueryBuilder.php
index 6baae5858a2..33d7db993b2 100644
--- a/module/VuFindSearch/src/VuFindSearch/Backend/Solr/QueryBuilder.php
+++ b/module/VuFindSearch/src/VuFindSearch/Backend/Solr/QueryBuilder.php
@@ -121,15 +121,17 @@ class QueryBuilder implements QueryBuilderInterface
         $params  = new ParamBag();
 
         if ($this->containsAdvancedLuceneSyntax($string)) {
-
             if ($handler) {
-                $params->set(
-                    'hl.q',
-                    $this->createAdvancedInnerSearchString($string, $handler)
-                );
                 $string = $this->createAdvancedInnerSearchString($string, $handler);
                 if ($handler->hasDismax()) {
+                    $oldString = $string;
                     $string = $handler->createBoostQueryString($string);
+
+                    // If a boost was added, we don't want to highlight based on
+                    // the boost query, so we should use the non-boosted version:
+                    if ($oldString != $string) {
+                        $params->set('hl.q', $oldString);
+                    }
                 }
             }
         } else {
-- 
GitLab