protected function SearchApiSolrBackend::createFilterQueries in Search API Solr 8
Same name and namespace in other branches
- 8.3 src/Plugin/search_api/backend/SearchApiSolrBackend.php \Drupal\search_api_solr\Plugin\search_api\backend\SearchApiSolrBackend::createFilterQueries()
- 8.2 src/Plugin/search_api/backend/SearchApiSolrBackend.php \Drupal\search_api_solr\Plugin\search_api\backend\SearchApiSolrBackend::createFilterQueries()
- 4.x src/Plugin/search_api/backend/SearchApiSolrBackend.php \Drupal\search_api_solr\Plugin\search_api\backend\SearchApiSolrBackend::createFilterQueries()
Recursively transforms conditions into a flat array of Solr filter queries.
Parameters
\Drupal\search_api\Query\ConditionGroupInterface $condition_group: The group of conditions.
array $solr_fields: The mapping from Drupal to Solr field names.
\Drupal\search_api\Item\FieldInterface[] $index_fields: The fields handled by the curent index.
array $options: The query options.
Return value
array Array of filter query strings.
Throws
\Drupal\search_api\SearchApiException
1 call to SearchApiSolrBackend::createFilterQueries()
- SearchApiSolrBackend::getFilterQueries in src/
Plugin/ search_api/ backend/ SearchApiSolrBackend.php - Serializes a query's conditions as Solr filter queries.
File
- src/
Plugin/ search_api/ backend/ SearchApiSolrBackend.php, line 1693
Class
- SearchApiSolrBackend
- Apache Solr backend for search api.
Namespace
Drupal\search_api_solr\Plugin\search_api\backendCode
protected function createFilterQueries(ConditionGroupInterface $condition_group, array $solr_fields, array $index_fields, array &$options) {
$fq = [];
$conditions = $condition_group
->getConditions();
foreach ($conditions as $condition) {
if ($condition instanceof ConditionInterface) {
// Nested condition.
$field = $condition
->getField();
if (!isset($index_fields[$field])) {
throw new SearchApiException($this
->t('Filter term on unknown or unindexed field @field.', array(
'@field' => $field,
)));
}
$value = $condition
->getValue();
$filter_query = $this
->createFilterQuery($solr_fields[$field], $value, $condition
->getOperator(), $index_fields[$field], $options);
if ($filter_query) {
$fq[] = [
'query' => $this
->createFilterQuery($solr_fields[$field], $value, $condition
->getOperator(), $index_fields[$field], $options),
'tags' => $condition_group
->getTags(),
];
}
}
else {
// Nested condition group.
$nested_fqs = $this
->createFilterQueries($condition, $solr_fields, $index_fields, $options);
$fq = array_merge($fq, $this
->reduceFilterQueries($nested_fqs, $condition));
}
}
return $fq;
}