68 lines
2.3 KiB
Diff
68 lines
2.3 KiB
Diff
diff --git a/src/AdvancedSearchQuery.php b/src/AdvancedSearchQuery.php
|
|
index af40fb7..b8c6eb7 100644
|
|
--- a/src/AdvancedSearchQuery.php
|
|
+++ b/src/AdvancedSearchQuery.php
|
|
@@ -143,6 +143,7 @@ class AdvancedSearchQuery {
|
|
public function alterQuery(Request $request, SolariumQueryInterface &$solarium_query, DrupalQueryInterface $search_api_query) {
|
|
// Only apply if a Advanced Search Query was made.
|
|
$terms = $this->getTerms($request);
|
|
+
|
|
if (!empty($terms)) {
|
|
$index = $search_api_query->getIndex();
|
|
/** @var \Drupal\search_api_solr\Plugin\search_api\backend\SearchApiSolrBackend $backend */
|
|
@@ -163,11 +164,10 @@ class AdvancedSearchQuery {
|
|
|
|
if (!$isDismax) {
|
|
// To support negative queries we must first bring in all documents.
|
|
- $q[] = $this->negativeQuery($terms) ? "*:*" : "";
|
|
+ $q = $this->negativeQuery($terms) ? "*:*" : "";
|
|
}
|
|
-
|
|
$term = array_shift($terms);
|
|
- $q[] = $term->toSolrQuery($field_mapping);
|
|
+ $q = '(' . trim($term->toSolrQuery($field_mapping));
|
|
|
|
// New.
|
|
$fields_list[] = $term->toSolrFields($field_mapping);
|
|
@@ -180,8 +180,8 @@ class AdvancedSearchQuery {
|
|
|
|
// For multiple conditions.
|
|
foreach ($terms as $term) {
|
|
- $q[] = $term->getConjunction();
|
|
- $q[] = $term->toSolrQuery($field_mapping);
|
|
+ $q .= ')' . $term->getConjunction() . '(';
|
|
+ $q .= trim($term->toSolrQuery($field_mapping));
|
|
|
|
// New.
|
|
$fields_list[] = $term->toSolrFields($field_mapping);
|
|
@@ -193,8 +193,8 @@ class AdvancedSearchQuery {
|
|
}
|
|
|
|
}
|
|
- $q = implode(' ', $q);
|
|
|
|
+ $q .= ')';
|
|
// Limit extra processing if Luncene Search is enable.
|
|
if ($isDismax) {
|
|
|
|
@@ -257,7 +257,7 @@ class AdvancedSearchQuery {
|
|
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) {
|
|
@@ -291,11 +291,9 @@ class AdvancedSearchQuery {
|
|
// make this field non-empty.
|
|
//$search_api_query->keys("advanced search");
|
|
}
|
|
-
|
|
$solarium_query->setQuery($q);
|
|
}
|
|
}
|
|
-
|
|
/**
|
|
* Alters the given view to be recursive if applicable.
|
|
*
|