Drupal Search: Install, Source and Security | FunnelSlayer

Drupal Search

Published by thomasroger76 in drupal-skills

No known issues3 installs

What this skill does

Use when implementing site search with Search API module, configuring search indexes (fields to index, processors), connecting to Solr backend (solr module, schema.xml, field mapping), connecting to Elasticsearch or OpenSearch backend, building search pages with Views + Search API, implementing faceted search with the Facets module, creating custom Search API processors for data transformation or query alteration, configuring multilingual search (langcode, language-specific analyzers), debugging

Add Drupal Search to your agent

Review the source and files first. When you are ready, copy the prompt instruction or use the CLI command supported by your environment.

Install with a prompt

Paste this into a compatible coding agent:

add this skill "drupal-search" from https://github.com/thomasroger76/drupal-skills

Install with the CLI

Run this command in a controlled environment after reviewing the repository:

npx skills add https://github.com/thomasroger76/drupal-skills --skill drupal-search

Skill instructions

Drupal Search — Search API & Full-Text Search — Référence Complète

Overview

Référentiel complet de Search API Drupal 8-11+ : configuration des indexes, backends (Database, Solr, Elasticsearch/OpenSearch), Views + Search API, Facets, processors custom PHP, multilingual search, autocomplete, debugging. Search API est le standard de facto — Solr est le backend dominant en production agence française (4/20 projets). Facets module est utilisé dans 60%+ des projets.

Fichiers de référence avec code PHP : processors custom complets dans custom-processors.md, config Solr détaillée dans solr-integration.md, facettes dépendantes dans facets.md.

🎯 La Règle Fondamentale

Search API, pas le module search core. Le module search core est limité à une recherche plein texte basique sur les nœuds. Search API indexe n'importe quelle entité, supporte des backends scalables (Solr, Elasticsearch), s'intègre nativement à Views, et supporte les facettes.


Choisir le Backend

BackendCas d'usageAvantagesInconvénients
Database (core)Dev local, petits sites (<5000 items)0 infraPas de relevance scoring, lent
SolrSites de taille moyenne à grandeRelevance, facettes, multilingueInfra Solr nécessaire
Elasticsearch/OpenSearchSites très large échelle, analyticsScalabilité, aggregationsConfiguration complexe

Règle : Database en développement, Solr en production pour tout site > 5000 entités indexées.


Quick Decision Table

BesoinOutilRéférence
Créer un index Search API/admin/config/search/search-api/add-indexsearch-api-setup.md
Choisir les champs à indexerIndex → Fields tab — ajouter les champs pertinentssearch-api-setup.md
Indexer les champs des entités référencéesIndex → Fields → Add related fieldssearch-api-setup.md
Configurer les processors (HTML filter, Tokenizer)Index → Processors tabsearch-api-setup.md
Lancer l'indexation complètedrush sapi-i (search-api:index)search-api-setup.md
Vider et réindexerdrush sapi-c && drush sapi-isearch-api-setup.md
Statut de l'indexationdrush sapi-s (search-api:status)search-api-setup.md
Connecter un backend SolrModule search_api_solr + configurer le serversolr-integration.md
Configurer Solr dans DockerService Solr + core Drupal spécifiquesolr-integration.md
Générer le schéma Solr depuis Drupaldrush solr-gsc (generate-solr-config)solr-integration.md
Connecter ElasticsearchModule elasticsearch_connectorelasticsearch.md
Page de recherche avec résultatsViews — ajouter une "Search API Index" Viewsearch-views.md
Exposer la recherche plein texteViews → Exposed filter → Search API Fulltextsearch-views.md
Filtrer par content type dans Views searchViews → filter sur typesearch-views.md
Facettes (filtres à cocher)Module facets + Views + Search APIfacets.md
Facette sur taxonomy termFacets → field field_tags → term facetfacets.md
Facette avec count (32) à côtéFacets → afficher le count de résultatsfacets.md
Facettes dépendantes (hiérarchiques)Facets — URL processors + Dependent Facetsfacets.md
Transformer les données à l'indexationCustom DataAlterCallback processorcustom-processors.md
Modifier la query Search APICustom SearchApiQuery hook ou QueryPreprocessorInterfacecustom-processors.md
Boost de relevance par champSolr → field boost, ou Search API field weightsolr-integration.md
Recherche multilingue (analyseurs par langue)Search API Solr + Language Fallback processorsolr-integration.md
Autocomplete dans le champ de recherchedrupal/search_api_autocomplete modulesearch-api-setup.md
Highlighting des termes recherchésSolr → Excerpt processor (HTML avec balises <em>)solr-integration.md
Recherche phonétique (soundex, metaphone)Solr — phonetic field type dans schemasolr-integration.md
Search API sans Views (API PHP)Index::query() + QueryInterfacecustom-processors.md
OpenSearch / AWS OpenSearch backenddrupal/elasticsearch_connector 8.x (ES + OpenSearch) OU drupal/search_api_opensearch (AWS) — jamais les deuxelasticsearch.md
Tolérance aux fautes de frappe (fuzzy search)Solr — lowercaseFilter + phonetic OU edgeNGram tokenizersolr-integration.md
Tracking des requêtes de recherchedrupal/search_api_stats — logs et rapports des termes recherchéssearch-api-setup.md
Recherche "did you mean" (suggestions)Solr SpellCheck component — configurer dans solrconfig.xml + Search API Solr settings → "Spellcheck"solr-integration.md
Synonymes dans la rechercheSolr synonym.txt dans la config du schemasolr-integration.md
Réindexer automatiquement après mise à jourdrupal/search_api_solr → Index automatique via Queue Worker à la sauvegarde d'entitésearch-api-setup.md
Filtrer les résultats par permissions DrupalSearch API Processor Content Access — obligatoire sur tout site avec accès restreintsearch-api-setup.md
Search API avec filtres géographiques (geosearch)drupal/geofield + Search API champ geofield + Solr RPT handlercustom-processors.md
Processor custom : annotation ou attribut PHP ?@SearchApiProcessor (annotation Doctrine) — PAS d'attribut #[], le module n'a pas migrécustom-processors.md

Anti-Patterns Critiques

❌ À ne jamais faire✅ Bonne pratiqueImpact
Module search core pour des besoins avancésSearch API + backend appropriéPas de facettes, relevance, multilingue
Indexer TOUS les champs sans réflexionSélectionner uniquement les champs utiles à la rechercheIndex trop lourd, indexation lente
Backend Database en production (> 5000 entités)Solr ou ElasticsearchRequêtes lentes, pas de relevance scoring
drush sapi-i sans drush sapi-c après changement de schémaVider l'index avant de réindexerDonnées obsolètes dans l'index
Schema Solr généré manuellementdrush solr-gsc puis copier dans SolrSchema incorrect, indexation partielle
Views Search sans paginationToujours paginer — 10 ou 20 résultatsPages très lentes, timeout
Facette sans filtre "0 results"Configurer "Min count = 1" dans FacetsFacettes vides affichées
Indexation des révisions non publiéesProcessor Content Access pour filtrerContenu draft visible dans les résultats
Cron désactivé pour l'indexation autoConfigurer le cron Drupal (drush cron)Nouveaux contenus non indexés
Recherche sans Content Access processorToujours activer Content AccessContenu privé visible dans les résultats

Évolution par Version Majeure

FeatureD8D9D10D11
Search API (contrib)✅✅✅✅
Search API Solr (contrib)✅✅✅✅
Facets module (contrib)✅✅✅✅
Search API Autocomplete✅✅✅✅
Elasticsearch Connector✅✅✅✅
drush sapi-i/c/s✅✅✅✅
Views + Search API✅✅✅✅
Search API Solr 4.x (D10+)❌❌✅✅
Database backend (core Search API)✅✅✅✅

Auto-Amélioration

  • lessons.md — Problèmes d'indexation et de configuration rencontrés en projet.
  • CHANGELOG.md — Historique des versions.

See Also

  • solr — Administration Solr autonome (cores, schema, solrconfig, tuning JVM) au-delà de l'intégration Drupal
  • drupal-views — Views + Search API, exposed filters search, facets dans Views
  • drupal-docker — Service Solr Docker, Elasticsearch Docker
  • drupal-performance — Cache des résultats de recherche, Varnish + Search
  • drupal-multilingual — Recherche multilingue, analyseurs par langue dans Solr
  • drupal-config — Exporter/importer la config Search API, indexes, servers
  • drupal-core — Cron (indexation auto), hook_search_api_query_alter()

Files included

  • CHANGELOG.md
  • custom-processors.md
  • elasticsearch.md
  • facets.md
  • lessons.md
  • search-api-setup.md
  • search-views.md
  • SKILL.md
  • solr-integration.md

More skills