Install
Works with Drupal: ^9.2 || ^10.0Using Composer to manage Drupal site dependencies
Alternative installation files
Release notes
Search API Solr 4.x is the unified release that supports 9 and a wide range of Solr versions.
The big changes in 4.x compared to 3.x:
- semantic versioning
- compatible to Drupal 9.x
- We upgraded to solarium 6.2 and therefore require at least PHP 7.3
- basic support for selected older Solr versions between 3.6 and 5.5 via the new search_api_solr_legacy sub-module
- jump-start Solr config-sets you could simply copy and deploy on you're Solr sever to create a core or a collection
- Automated configset upload and collection creation for Solr Cloud using the search_api_solr_admin sub-module
Like Search API Solr Search 8.x-3.x, it supports upgrade paths from any previous 8.x version including Search API Solr Multilingual 8.x-1.x!
BTW there's a new user contributed documentation: https://www.drupal.org/docs/8/modules/search-api-solr
The big changes in 3.x compared to 2.x:
- We collapsed the features of the Standard Backend, both Multilingual Backends and the "Any Schema" Backend into a one new unified Solr Backend. There's a migration path :-)
- Mulitisite is back! Select "Clone for Multisite" in an Index' operations, save the Clone Form, export the cloned index config (and probably the server config), deploy the config to a different site, configure a search View as usual, enjoy! ;-)
- Spellchecking is now configurable like Suggesters. Use the standard filed configuration to decide which fields should feed the spellcheck catalog
- We now distinguish between NGram and EdgeNGram. Both field types are fully configurable via Drupal config files.
- Solr 7/8 compatible implementation of index time boosting of terms and documents
- Configurable MoreLikeThis parameters per index
- Support for Solr Cloud exclusive features
The big changes in 3.x compared to 1.x:
- The module doesn't include ready to use Solr config-sets anymore! These were too limited for the changes mentioned above. In 3.x the config-sets will be "generated" individually for your site. See
- Native support for Solr Cloud
- Multingual
Important: Since solarium 5.0 and later supports Solr v2 API, the connector settings need to be adjusted when updating from Search API Solr 1.x or 2.x! The "path" must not end with "/solr" but "/" without "solr" because that is the v1 API endpoint!
Your existing configs will be adjusted automatically via an update hook implementation. But if you've overwritten the connection settings (for example in settings.php) you must adjust the path by yourself!
Important: You need to update your Solr config files if you update from any previous version! After deploying the config set to your Solr server(s) you need to re-index your content!
Important: You might need to adjust the solrcore.properties
file to your needs. If you get errors about missing classes you should adjust the solr.install.dir
.
The recommended way to install this module properly is the usage of composer!
To install the module including its dependencies simply change into your drupal directory and run composer require drupal/search_api_solr:^4.2
.
But if you just download the module it won't work because the required external libraries are not part of this package!
Upgrade path for Search API Multilingual Solr Search 8.x-1.x
You should NOT upgrade to Search API Solr 8.x-2.x or 8.x-3.x first! Just directly upgrade to 4.2.x.
Changes since 4.2.6
- #3261561: geodist() facets will break with solarium 6.2.3 by mkalkbrenner
- #3260635: Tests fail since "Item URL" field was added to Views by mkalkbrenner
- #3259829: Don't "store" sort_* collation fields by mkalkbrenner
- #3259764: [PHP8.1] Deprecation notice when running outdated config: strlen(): Passing null to parameter #1 ($string) of type string is deprecated by idebr, mkalkbrenner
- #3258640: Implement new AutocompleteBackendInterface by mkalkbrenner
- #3197168: treat language "zxx" like "und" by Taran2L, mkalkbrenner
Changes since 4.2.5
- #3257440: PHP errors with More Like This following upgrade - preg_match(): No ending delimiter '^' found in Drupal\search_api_solr\Plugin\search_api\backend\SearchApiSolrBackend->getMoreLikeThisQuery() by Janner, mkalkbrenner
Changes since 4.2.4
- #3200393: Make finalization debug messages optional by idebr, mkalkbrenner
- #3083939: More like this doesn't work with integer fields in solr8 by mkalkbrenner
- #3257389: hook_search_api_solr_suggester_autocomplete_query_alter is not called by mkalkbrenner
- #3197168: treat language "zxx" like "und" by Taran2L, mkalkbrenner
- #3257303: deprecation broke hook_search_api_solr_converted_query_alter by neclimdul, mkalkbrenner
- #3257285: WSOD due to undefined method extractSpellCheckSuggestions by socketwench, mkalkbrenner
Changes since 4.2.3
- #3254767: Move autocomplete functionalities from SearchApiSolrBackend into plugins by mkalkbrenner
- #3256039: Support hostContext parameter for Solr Cloud by mkalkbrenner
- #3256034: Only report autocomplete as supported feature if search_api_solr_autocomplete is installed by mkalkbrenner
- #3255034: Suppress warnings about missing language-specific field types by mkalkbrenner
- #3251043: Configsubscriber does not take site install with existing configuration into account. by jbertoen, mkalkbrenner
- #3255297: Report all supported data types to Search API by drunken monkey, mkalkbrenner
- #3236773: Missing config schema by saidatom, claudiu.cristea, mkalkbrenner, idimopoulos
- #3254486: Move and revise code examples from hooks to events by mkalkbrenner
- #3203375: Introduce events and deprecate hooks by mkalkbrenner
- #3254183: Provide documentation Solr major version updates by mkalkbrenner
- #3253733: Depend on Drupal ^9.2, use Drupal 9.3 as default for tests by mkalkbrenner
- #3253784: PHP 8.1: IteratorAggregate::getIterator(): Traversable by mkalkbrenner
Changes since 4.2.2
- #3253267: Be fault tolerant when a single value is provided in combination with a multi-valued operator by B2F, mkalkbrenner
- #3009243: facets having a mincount 0 don't work with point based types and distributed ranges by mkalkbrenner, mpp, johnny5th
- #3188538: Fulltext facets silently fail by agentrickard, mkalkbrenner
- #3251043: Configsubscriber does not take site install with existing configuration into account. by jefuri, mkalkbrenner
- #3250116: Server page crash when working with Elasticsearch and Solr simultaneously by dpaz, mkalkbrenner
- #3249318: Optionally index empty text values by mkalkbrenner
Changes since 4.2.1
- #3248447: search_api_solr_admin should have an extra.drush.services section in its composer.json by mkalkbrenner
- #3248261: Remove Psr14Bridge, use Drupal 9.1 Event Dispatching by mkalkbrenner
- #3248214: Search API 1.21, Solarium 6.1.6, drop Drupal 8 support by mkalkbrenner
- #3205298: Getting SearchApiSolrException when extracting file hosted on s3fs. by ashu1629, rudy.barrett, mkalkbrenner
- #3226084: Adopt new boost factor config of Search API by mkalkbrenner
- #3244857: Add "Preserve original" option to regex processor by mkalkbrenner
- #3240049: Not able to connect with local solr server by mkalkbrenner, n4r3n
- #3231995: Drupal\Tests\BrowserTestBase::$defaultTheme is required for modules/search_api_solr_defaults/tests/src/Functional/IntegrationTest.php by recrit, mkalkbrenner
- #3231713: Handle American and Britisch variations by mkalkbrenner, ultrabob
- #3231567: Allow to turn off the distrib parameter for Solr Cloud by mkalkbrenner
- #3231568: Provide solr_document_boost_factors query option by mkalkbrenner
Changes since 4.2.0
- #3224223: Add Māori macrons (accents) to the jump-start configs by RoSk0, mkalkbrenner
- #3225816: Wrong error reporting when receiving timeout exception with error code 0 by Murz, mkalkbrenner
- #3057829: Automatic upload of config-sets to Solr Cloud by mkalkbrenner, C-Logemann, minorOffense
- #3226935: Fix incorrect @throws an @var doc comments by drunken monkey, mkalkbrenner
- #3226657: Multiple problems in SolrConnectorPluginBase::useTimeout() by drunken monkey, mkalkbrenner
- #3225723: Missing file warning list showing numeric indexes instead of file names by eahonet, mkalkbrenner
- #3072895: Add support for JTS Spatial queries with polygons via extending "location_rpt" field type attributes by BramDriesen, Murz, aleix, mkalkbrenner
- #3222968: Spellcheck suggestions returning concatenated/incorrect results by sonu.raj.chauhan, mkalkbrenner
- #3221913: Fulltext search not working as expected with multiple fields on older Solr versions by mkalkbrenner, rloos289
Changes since 4.1.12
- #3220620: Require Solarium ^6.1.3 by mkalkbrenner
- #3220249: Always name generated config-sets with current module version by mkalkbrenner
- #3219697: php 7.2: Add a warning or drop support because of solarium > 6.1 by mkalkbrenner, C-Logemann
- #3220248: Support for Solr 3.6 is missing in search_api_solr_legacy description by mkalkbrenner
- #3220122: Provide a field to debug document scoring within Views by mkalkbrenner
- #3217856: Avoid incompatibility with LDAP contrib module and its EventDispatcher workaround by sunlix, mkalkbrenner
- #3217635: Solr error when boost_term contains a string exactly 254 chars long by herved, mkalkbrenner
- #3217422: Solr error when boost_term contains a string with "|" by herved, mkalkbrenner
Changes since 4.1.11
- #3212089: Add Hungarian Text Field by kaszarobert, mkalkbrenner
- #3217177: Test against Drupal 9.2 by mkalkbrenner
- #3217173: Run NumberFieldBoostTest on Solr backend by mkalkbrenner
- #3210504: Stopwords for Ukrainian language are copy-paste from Russian by artem_sylchuk, mkalkbrenner
- #3216915: Avoid duplicate entries for boosted terms, only use highest boost factor by mkalkbrenner
- #3216750: Boost_Term Cause Solr Error: possible analysis error: For input string: "5,0" by mkalkbrenner, t.seifert
- #3215664: Handle multibyte spaces by mkalkbrenner
- #3086300: boost by date processor by mkalkbrenner
- #3208230: Add default stopwords for Japanese by mkalkbrenner
- #3207690: Deprecated hook_search_api_views_handler_mapping_alter() by guilhermevp, KapilV, mkalkbrenner
- #3208171: Improve Japanese Text Field by mkalkbrenner
- #3207433: Download config.zip currently used by Solr server by mkalkbrenner
- #3203692: Add PostCreateIndexDocumentEvent and PostCreateIndexDocumentsEvent by mkalkbrenner
- #3203370: Dispatching PreExtractFacetsEvent fails on Drupal <= 9.0 by mkalkbrenner
- #3203363: Suggest Search API Solr NLP via composer by mkalkbrenner
- #3077869: Adding (extracting) Custom Facets by Floris Vedder, mkalkbrenner
- #3203251: Avoid error mesage on status page if index is empty by mkalkbrenner
- #3203244: Avoid Notice: Trying to access array offset on value of type null by mkalkbrenner
- #3203214: Adopt Drupal >= 9.1 Event dispatching by mkalkbrenner
- #3201670: Solr devel local task is missing for some restrictive entities by mkalkbrenner
- #3198150: Curl adapter doesn't respect the configured timeout by DeFr, mkalkbrenner
Changes since 4.1.10
- #3195477: Some improvements to search_api_solr_devel debugging by janusman, mkalkbrenner
- #3196777: Test against solarium 6.1.0 by mkalkbrenner
- #3194222: Allow installation with PHP 8 by mkalkbrenner
- #3188815: Empty XML config files cause crash in PHP 8 by Darvanen, mkalkbrenner
- #3193741: Correct token use in .install file by rpsu
- #3185867: Legacy 3.6 plugin doesn't inherit config by NickDickinsonWilde, mkalkbrenner
Changes since 4.1.9
- #3183203: German synonyms not working by mkalkbrenner, agoradesign
- #3182687: Introduce a @SearchApiParseMode plugin to construct fuzzy search queries by Sam152, mkalkbrenner
- #3182359: Add support for Solr 3.6 to search_api_solr_legacy by mkalkbrenner
- #3091099: Include dictionary information in returned suggestions by hideaway, mkalkbrenner
- #3153385: Improve field cardinality detection by mkalkbrenner, KarlShea
- #2906905: Custom fields automatically treated as multi-value by mkalkbrenner, james_kerrigan, marcvangend, Murz
- #3182348: skip_schema_check should become a connector property by mkalkbrenner
Changes since 4.1.8
- #2978909: Autocomplete doesnt show exact match by recrit, tim-diels, MiroslavBanov, mkalkbrenner, swentel
- #3181633: Drop support for LanguageInterface::LANGCODE_NOT_APPLICABLE by mkalkbrenner
- #3181618: Suggester context filter broken with Solr 7 and 8 by mkalkbrenner
- #3181260: German umlaut edge cases for plural forms by mkalkbrenner
Changes since 4.1.7
- #3180934: Solarium PHP 8 compatiblity issue by mkalkbrenner
- #3180856: Add a hook to alter the config zip before streamed by mkalkbrenner
- #3179769: SearchApiSolrBackend->setSpellcheck() fails when query does not return a language by jsasanka, mkalkbrenner
- #3177987: Allow Custom Solr Connectors to adjust the backend config in ViewsTest by mkalkbrenner
- #3176034: Test against Drupal 9.1.x by mkalkbrenner
- #3176812: Use Drupal 8.9 to build jump-start config-sets by mkalkbrenner
Changes since 4.1.6
- #3175795: drupalPostForm in functional tests is deprecated by paulocs, mkalkbrenner
- #3153153: LogicException: The database connection is not serializable by mkalkbrenner, cristiroma, drunken monkey
- #3176417: Adjust return types in tests for newer PHPUnit versions by mkalkbrenner
- #3176031: Search API Solr Devel sometimes shows wrong URL by mkalkbrenner
- #3174446: Password needs to be entered again when editing a basic auth connection by mkalkbrenner
- #3176029: Timeout setting doesn't work for HTTP fallback adapter by mkalkbrenner
- #3174447: createPing should accept query options by mkalkbrenner
- #3173836: Skip status report for disabled servers by mkalkbrenner
- #3170802: search_api_solr_cron() fails when used with Solr 4.x backend by AndreyMaximov, podarok, mkalkbrenner
- #3170793: Solr 4.x cores appear unavailable in Search API admin UI by AndreyMaximov, podarok, mkalkbrenner
Changes since 4.1.5
- #3166620: Skip erroneous documents on indexing and throw meaningful exceptions by mkalkbrenner, BetoAveiga
- #3169516: Let Connectors overwrite the endpoint URI in messages by mkalkbrenner
- #3169528: SolrConnectorPluginBase::handleHttpException() should be final by mkalkbrenner
Changes since 4.1.4
- #3166620: Skip erroneous documents on indexing and throw meaningful exceptions by mkalkbrenner, BetoAveiga
- #3167718: Solr Cloud ignores solrcore.properties by mkalkbrenner
- #3167638: Solr 8 config-set contains wrong fallback LUCENE_70 for luceneMatchVersion by mkalkbrenner
- #3167452: Timout settings are not applied for stream() and graph() by mkalkbrenner, klabowterman
- #3165913: TypeError: Argument 1 passed to Solarium\QueryType\Select\Query\Query::addSort() must be of the type string by vaish, mkalkbrenner
- #3166519: Tika based extraction is broken in Solr 8.6 by mkalkbrenner
- #3160826: Performance issue in getTargetedIndexId by mkalkbrenner, Siegrist
Changes since 4.1.3
- #3146655: Throw exception if config.zip is not usable by cristiroma, mkalkbrenner, mandclu
- #3157009: Missing solrconfig_index.xml by mkalkbrenner, sah62
Changes since 4.1.2
- #3127004: Test failures with PHP 7.4 by mkalkbrenner
- #3155397: Don't complain about modified schema if jump-start-config is used by mkalkbrenner
- #3154019: There are some language-specific field types missing in schema of Solr server localhost: pt-pt. by jcnventura, mkalkbrenner
- #3152575: Unable to find the wrapper "temporary" in tests by mkalkbrenner
- #3155395: Devel dumper fails on large responses by mkalkbrenner
- #3155070: drupal/devel 3.x doesn't exist anymore by jcnventura, mkalkbrenner
- #3146655: Throw exception if config.zip is not usable by mkalkbrenner
Changes since 4.1.1
- #3150197: BackendTrait for Suggesters fails on logging Exceptions by suzymasri, mkalkbrenner, kfritsche
- #3118978: Error 500 thrown by Solr server on admin/reports/status by Sam152, kreatIL, mkalkbrenner
- #3153247: Replace assertions involving calls to isset() with assertArrayHasKey()/assertArrayNotHasKey by gena.io, mkalkbrenner
- #3152575: Unable to find the wrapper "temporary" in tests by mkalkbrenner
- #2924132: Port solr_devel functionality to Search API Solr (Part 2) by janusman, mkalkbrenner, DigitalCatalyst
Changes since 4.1.0
- #3150214: Fatal error: Declaration of Drupal\search_api_solr\Solarium\EventDispatcher\Psr14Bridge::dispatch by mkalkbrenner
Changes since 4.0.1
- #3146619: Require solarium 6 to solve core/symfony compatibility event dispatcher issues by mkalkbrenner
- #3131198: View sort by relevance alters results by mariusdiacu, mkalkbrenner
- #3145656: SolrFieldTypeForm fatals if the text fields property is empty by andrewbelcher, mkalkbrenner
- #3144903: Invalid Date String Exception when highlighting by mkalkbrenner, julia_schwarz
Changes since 4.0.0
- #3137654: New path for ArrayUtils forgot to be changed in the .module by Fabsgugu, geerlingguy, jonathan_hunt, mkalkbrenner
- #3135367: Run daily tests on github by o-msh, mkalkbrenner
Changes since 4.0.0-beta2
- #3136510: Incorrect notice language specific field types missing by mkalkbrenner, paulvb
- #3135367: Run daily tests on github by mkalkbrenner
Changes since 4.0.0-beta1
- #3133881: Update README.md by solideogloria, mkalkbrenner
- #3134522: Collapse README.md and INSTALL.md by mkalkbrenner
- #3134482: Only test Solr 4 on travis by mkalkbrenner
- #3070455: Provide jump-start Solr config-sets by mkalkbrenner
- #3132722: Error: Unsupported operand types in search_api_solr_legacy_form_search_api_server_form_alter() by mkalkbrenner, jhedstrom
- #3109911: Autocomplete suggestions fail for large requests by recrit, mkalkbrenner
- #3066092: Delete nested documents when deleting parent by bucefal91, mkalkbrenner, rp7
- #3130331: Basic Auth is covered by solarium already, remove obsolete code by mkalkbrenner
- #3124893: Test against solarium 5.2 and 6.0 by mkalkbrenner
- #3128048: Update depedency and support multiple versions of them by mkalkbrenner, japerry
Changes since 4.0.0-alpha1
- #3127958: SEARCH_API_SOLR_MIN_SCHEMA_VERSION needs to be adjusted to semantic versioning by mkalkbrenner
- #3127886: Forcing Solr 4 must set minimum version to 4.5.0 instead of 4.0.0 by mkalkbrenner
Changes since 8.x-3.9
- #3127078: Using assertContains() with string haystacks is deprecated by mkalkbrenner
- #3126833: provide search_api_solr_legacy as transition to Drupal 9 for Solr 4 and 5 users by mkalkbrenner
- #3106867: Don't show Solr specific index options if backend isn't a Solr backend by batkor, mkalkbrenner
- #3124436: get prepared for solarium 5.2 and 6.0 by mkalkbrenner
- #3124428: raise core dpendency from 8.7.7 to 8.8 by mkalkbrenner
- #3122937: Test against Solr 8.5.0 by mkalkbrenner
- #3113473: Concat syntax fix by gnunes, mkalkbrenner
- #3113079: don't verify the Solr config set in use if skip_schema_check is set. by mkalkbrenner
- #3109599: Solr endpoint unreachable or returned unexpected response code "0" when indexing by mkalkbrenner
- #3096210: Improve french solr_field_type by B2F, mkalkbrenner, gonssal, SylvainM, DeFr
- #3104257: ElisionFilterFactory issue on text_fr by B2F, mkalkbrenner
- #3110278: Drupal Coding Standarad issues by malte.koelle, mkalkbrenner