Install
Works with Drupal: ^8.8 || ^9Using Composer to manage Drupal site dependencies
Alternative installation files
Release notes
Search API Solr 4.1.x is the unified release that supports Drupal 8 and 9 and a wide range of Solr versions.
The big changes in 4.x compared to 3.x:
- semantic versioning
- compatible to Drupal 8.8, 8.9 and 9.x
- We upgraded to solarium 6.0 and therefore require at least PHP 7.2
- basic support for older Solr versions between 4.5 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
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 supports Solr v2 API, the connector settings need to be adjusted! 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
.
PHP 7.2 or newer required!
Due to the requirements of the libraries we use we can't support PHP 5, PHP 7.0 or PHP 7.1 anymore! These versions reached EOL anyway.
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.1
.
But if you just download the module it won't work because the required external libraries are not part of this package!
The Drupal 8 symfony/event-dispatcher issue!
See #3085196: How to upgrade to solarium 5.1.x, 5.2.x or 6.0.x for details. But with the Search API Solr 4.1.0 release we solved that issue! So it doesn't exist anymore for new installations.
If you applied one of the workarounds before, don't forget to revert them!
Drupal 8 users should for example update like this to revert to the original event-dispatcher:
composer require symfony/event-dispatcher:~3.4.0 solarium/solarium:^6.0 search_api_solr:^4.1
Upgrade path for Search API Multilingual Solr Search 8.x-1.x
You should NOT upgrade to 8.x-2.x or 8.x-3.x first! Just directly upgrade to 4.x.
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