From 6fbb34833b9557dfd323de6eaf2436bb38eb8e6c Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Fri, 30 Aug 2013 11:27:32 -0400
Subject: [PATCH] Fixed bug: incorrect advanced search spelling query.

---
 .../VuFindSearch/Backend/Solr/QueryBuilder.php    | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/module/VuFindSearch/src/VuFindSearch/Backend/Solr/QueryBuilder.php b/module/VuFindSearch/src/VuFindSearch/Backend/Solr/QueryBuilder.php
index a2082950e96..8d8bd87ff22 100644
--- a/module/VuFindSearch/src/VuFindSearch/Backend/Solr/QueryBuilder.php
+++ b/module/VuFindSearch/src/VuFindSearch/Backend/Solr/QueryBuilder.php
@@ -123,6 +123,14 @@ class QueryBuilder implements QueryBuilderInterface
      */
     public function build(AbstractQuery $query)
     {
+        $params = new ParamBag();
+
+        // Add spelling query if applicable -- note that we mus set this up before
+        // we process the main query in order to avoid unwanted extra syntax:
+        if ($this->createSpellingQuery) {
+            $params->set('spellcheck.q', $query->getAllTerms());
+        }
+
         if ($query instanceOf QueryGroup) {
             $query = $this->reduceQueryGroup($query);
         } else {
@@ -132,8 +140,6 @@ class QueryBuilder implements QueryBuilderInterface
         $string  = $query->getString() ?: '*:*';
         $handler = $this->getSearchHandler($query->getHandler());
 
-        $params  = new ParamBag();
-
         if ($this->containsAdvancedLuceneSyntax($string)) {
             if ($handler) {
                 $string = $this->createAdvancedInnerSearchString($string, $handler);
@@ -166,11 +172,6 @@ class QueryBuilder implements QueryBuilderInterface
         }
         $params->set('q', $string);
 
-        // Add spelling query if applicable:
-        if ($this->createSpellingQuery) {
-            $params->set('spellcheck.q', $query->getAllTerms());
-        }
-
         return $params;
     }
 
-- 
GitLab