diff --git a/config/sync/search_api.index.autocomplete.yml b/config/sync/search_api.index.autocomplete.yml index f99fc21..c26c079 100644 --- a/config/sync/search_api.index.autocomplete.yml +++ b/config/sync/search_api.index.autocomplete.yml @@ -73,6 +73,14 @@ field_settings: dependencies: module: - taxonomy + parent: + label: 'Parents du terme' + datasource_id: 'entity:taxonomy_term' + property_path: parent + type: integer + dependencies: + module: + - taxonomy status: label: Published datasource_id: 'entity:taxonomy_term' @@ -97,6 +105,14 @@ field_settings: dependencies: module: - taxonomy + vid: + label: Vocabulaire + datasource_id: 'entity:taxonomy_term' + property_path: vid + type: string + dependencies: + module: + - taxonomy datasource_settings: 'entity:taxonomy_term': bundles: @@ -113,6 +129,7 @@ processor_settings: add_url: { } aggregated_field: { } entity_status: { } + entity_type: { } language_with_fallback: { } rendered_item: { } solr_date_range: diff --git a/web/modules/custom/materio_sapi/src/Controller/FormAutocomplete.php b/web/modules/custom/materio_sapi/src/Controller/FormAutocomplete.php index c03c3c3..217adda 100644 --- a/web/modules/custom/materio_sapi/src/Controller/FormAutocomplete.php +++ b/web/modules/custom/materio_sapi/src/Controller/FormAutocomplete.php @@ -54,6 +54,21 @@ class FormAutocomplete extends ControllerBase { // Add sorting. $query->sort('search_api_relevance', 'DESC'); + // remove thesaurus tags without parents (main categories) + $parents_conditions = $query->createConditionGroup('OR'); + // tags + $tags_conditions = $query->createConditionGroup('AND'); + $tags_conditions->addCondition('vid', 'tags'); + $parents_conditions->addConditionGroup($tags_conditions); + // OR thesaurus & has parent + $thesaurus_conditions = $query->createConditionGroup('AND'); + $thesaurus_conditions->addCondition('vid', 'thesaurus'); + $thesaurus_conditions->addCondition('parent', 0, '<>'); + $parents_conditions->addConditionGroup($thesaurus_conditions); + + $query->addConditionGroup($parents_conditions); + + // Set one or more tags for the query. // @see hook_search_api_query_TAG_alter() // @see hook_search_api_results_TAG_alter()