From 9d34cf708b7487b4e503617de0584f51798d08fb Mon Sep 17 00:00:00 2001 From: Kyle Huynh <7862086+kylehuynh205@users.noreply.github.com> Date: Thu, 20 Jun 2024 16:59:03 -0400 Subject: [PATCH] Update AdvancedSearchQuery.php Add missing boost number for each field for edismax search --- src/AdvancedSearchQuery.php | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/AdvancedSearchQuery.php b/src/AdvancedSearchQuery.php index e0e555f..af40fb7 100644 --- a/src/AdvancedSearchQuery.php +++ b/src/AdvancedSearchQuery.php @@ -250,10 +250,25 @@ class AdvancedSearchQuery { } else { $query_fields = $fields_list; - } - $query_fields = implode(" ", array_unique($query_fields)); - $dismax->setQueryFields($query_fields); + + // Get the indexed fields from /admin/config/search/search-api/index/..../fields + $boostedFields = []; + foreach ($index->getFields() as $field_id => $field) { + $boostedFields[$field_id] = $field->getBoost(); + } + + $str_fields_with_boost = ""; + // Adding a boost number for each field) + foreach($query_fields as $solr_field) { + foreach($boostedFields as $indexed_field => $boostnum) { + if(strpos($str_fields_with_boost, $indexed_field) == false && strpos($solr_field, $indexed_field) !== false) { + $str_fields_with_boost .= $solr_field . "^" . $boostnum . " "; + } + } + } + + $dismax->setQueryFields($str_fields_with_boost); } }