Search API + Solr is the standard for serious Drupal search. When it's set up correctly it's fast, flexible, and powerful. When it's not, you get the kind of silent pagination bugs I wrote about in my first post. Here's the production setup guide I wish I'd had.
Installation
composer require drupal/search_api drupal/search_api_solr
drush en search_api search_api_solr -yThen go to Configuration → Search and Metadata → Search API and create a new server pointing at your Solr instance. For Pantheon, Acquia, or Platform.sh, your host provides the Solr connection details — check your platform's documentation for the exact host, port, and core name.
Schema configuration
The Search API Solr module generates a Solr schema based on your index configuration. Download it and upload it to your Solr core via the Solr admin UI. Don't skip this step — running on the default Solr schema causes subtle field type mismatches that only appear at scale.
# Download the generated schema
drush solr-gsc > schema.xml
# Or via Drush if your Solr is accessible
drush search-api-solr:upload-config <server_id>Multilingual indexing: For sites with multiple languages, enable the Search API language field and add per-language text fields to your index. This ensures Solr uses the correct stemmer and stopword list for each language rather than treating all content as English.
Explicit row limits — the critical config
Set this in your Solr server config in Drupal. Navigate to your server's edit page and find the "Advanced" section:
# In your Solr server configuration
# Set these explicitly — never rely on Solr defaults:
solr_config:
rows: 10 # Results per page for normal queries
max_rows: 10000 # Maximum rows for any single query (bulk exports)Facets
Install the facets module for filter sidebar functionality. Facets integrates cleanly with Search API and lets editors configure filter blocks through the UI without developer involvement. Cache the facet blocks aggressively — they're expensive to compute on every request.