Install
Works with Drupal: 8.xUsing Composer to manage Drupal site dependencies
Alternative installation files
Release notes
This is the fourth maintenance release of 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.
- We upgraded to solarium 5.0 and therefore require at least PHP 7.1
- Experimental support for installation via Ludwig
- Solr 7/8 compatible implementation of index time boosting of terms and documents
- Configurable MoreLikeThis parameters per index
The big changes in 3.x compared to 1.x:
- The module doesn't include ready to use Solr config-sets anymore! These were to limited for the changes mentioned above. In 3.x the config-sets will be "generated" individually for your site. See
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
.
Solr 6 and 7 and 8, nothing else!
The minimum supported Solr version is 6.4. But due to security issues it's highly recommended that you use at least Solr 7.7.2!
As you can see at https://lucene.apache.org/solr/downloads.html the Solr project itself declared "End Of Life" (EOL) for any Solr version before 7.7.
If you use Solr 6.5.x you have to be aware that there's a known issue within Solr itself that always leads to zero results in combination with search_api_autocomplete: #2869529: Autocomplete (and spell checking) is broken on Solr 6.5.x, Solr 6.6 will solve the issue.
Since this bug is fixed in Solr 6.6.0 we declare Solr 6.5.x as unsupported!
PHP 7.1 or newer required!
Due to the requirements of the libraries we use we can't support PHP 5 and PHP 7.0 anymore!
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:^3.0
.
Alternatively we added experimental support for the ludwig installer.
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 8.x-2.x first before you upgrade to 8.x-3.x! Just directly upgrade to 8.x-3.x.
Changes since 8.x-3.3
- Issue #3075362: Remove obsolete code required for Search API before 1.14 by mkalkbrenner
- Issue #3074964: Parameter must be an array or an object that implements Countable in SearchApiSolrBackend->setAutocompleteSuggesterQuery() by seanB
- Issue #3074562: Update the multisite diagram by OanaIlea, cspitzlay
- Issue #3073747: Polish phonetic field type must not use protwords_de.txt by OanaIlea, Adrian Liegmann, mkalkbrenner
- Issue #3073260: Tests are failing on Drupal 8.8 by mkalkbrenner
- Issue #3071284: Distinguish between Norwegian Bokmål and Norwegian Nynorsk by OanaIlea, mkalkbrenner, Hmengland
- Issue #3073608: ludwig.json references outdated solarium version by mkalkbrenner
- Issue #3073605: harmonize module names by mkalkbrenner
- Issue #3073493: Missing mark-up end in INSTALL.md by ressa
- Issue #3073236: SolrConnectorPluginBase isn't sending the application/json as content type to the REST API Calls by Nick_vh, mkalkbrenner
- Issue #3016174: SolrDocumentDefinition conflicts with TypedDataPropertyDeriverBase::getDerivativeDefinitions by gease
Changes since 8.x-3.2
- Issue #3071739: fix search_api_solr_defaults tests by mkalkbrenner, idebr
- Issue #3072681: Clean-up 1.x to 3.x upgrade path and avoid obsolete update hooks. by mkalkbrenner
- Issue #3061334: Cannot update Solr Field Type entity type by sagesolutions, mkalkbrenner
- Issue #3072264: Mention different Solr core path example in INSTALL.md by mkalkbrenner
- Issue #3071737: use drush 9.7 for tests by mkalkbrenner
- Issue #3042605: Drupal 9 Deprecated Code Report by Sergiu Stici, idebr, josephdpurcell, aspilicious, mkalkbrenner
- Issue #3069733: Depending on the selected parse mode, edismax forced via API might cause exceptions by mkalkbrenner, skyhawk669, Hmengland
- Issue #3070981: Add Estonian optional config by OanaIlea, mkalkbrenner
- Issue #3071034: ukrainian.dict is not found for Solr 8.2.0 by mkalkbrenner
- Issue #3016174: SolrDocumentDefinition conflicts with TypedDataPropertyDeriverBase::getDerivativeDefinitions by gease, andrewbelcher
- Issue #3068714: Views without a pager are now limited to 10 results, make the default rows parameter configurable by mpp, mkalkbrenner
- Issue #3071004: Run tests against Solr 8.2.0 by mkalkbrenner
- Issue #3066614: SolrConnectorPluginBase::getServerUri() returns incorrect information on edit form by idebr, mkalkbrenner
- Issue #3067831: Drupal WoD/Error page 500 when Solr is not available by mkalkbrenner, Spokje, flemming.fridthjof, Andy Tawse, carsonw, rudy.barrett
Changes since 8.x-3.1
- Issue #3066194: Some statistics lead to exceptions when using individual collections per index on the same server by ekes, mkalkbrenner
- Issue #3039251: Notice: Constant DATETIME_STORAGE_TIMEZONE already defined by mkalkbrenner, TravisCarden
- Issue #3066023: 8.x-3.2 will require search_api 8.x-1.14 by mkalkbrenner
- Issue #3064173: Leverage Solr's time zone support for date calculations by mkalkbrenner
- Issue #3065831: Can't find resource 'stopwords_tr.tx' in classpath by mkalkbrenner
- Issue #3065822: Can't find resource 'stopwords_th.txty' in classpath by mkalkbrenner
- Issue #3065288: Failing to create Solr core with the config generated to Traditional Chinese by RoSk0, mkalkbrenner
- Issue #3065606: drush integration of serach_api_solr_devel broken with search_api 8.x-1.14 by mkalkbrenner
- Issue #3065385: Drush commands entirely broken because of Search API changes by mkalkbrenner
- Issue #3065320: Generate configs for all supported languages on travis by mkalkbrenner
- Issue #3063218: Don't add velocity libs anymore by mkalkbrenner
- Issue #3064289: Luke and Stats request handlers don't take index-specific collections into account by mkalkbrenner
- Issue #3063971: getMaxDocumentVersions() and getDocumentCounts() don't work when collection is set on index entity by mkalkbrenner, cspitzlay
- Issue #3063739: Some decisions depend on Solr field prefixes which is wrong for Solr Document Datasource by mkalkbrenner
- Issue #3050475: SearchApiSolrBackend is setting incorrect prefix to Search API reverse entity references by drunken monkey, mkalkbrenner
- Issue #3061962: Field names that begin with 't' cannot be used as facets by mkalkbrenner
- Issue #3061901: Add parse mode to isolate and prepare search keys for building low level custom queries by mkalkbrenner, Nick_vh
- Issue #3040323: Upgrade to ZipStream-PHP 1.1.0 by mkalkbrenner
Changes since 8.x-3.0
- Issue #3061157: Upgrade from 2.7 to 3.0-alpha2 to 3.0 leads to corrupt spellchecker configs by mkalkbrenner, Gil'Barbar
- Issue #3061126: Recursive union of search_api_solr default index third party settings fails by mkalkbrenner
- Issue #3061131: Test against Solr 7.7.2 and 8.1.1 by mkalkbrenner
- Issue #3060966: Let indexes use their individual collections on Solr Cloud by mkalkbrenner
Changes since 8.x-3.0-rc1
- Issue #3060227: Pagination / Number of items broken for MLT block by mkalkbrenner, lukus
- Issue #3043176: Remove replication request handler for Solr Cloud by mkalkbrenner
- Issue #3059776: Result does not contain the essential ID field "ss_search_api_id". by mkalkbrenner, lukus
- Issue #3059301: search_api_solr_devel should handle any Exception by mkalkbrenner
Changes since 8.x-3.0-beta3
- Issue #3056978: Drupal 8.8 on travis: Script "drupal-phpunit-upgrade" is not defined in this package by mkalkbrenner
- Issue #3053989: ukrainian.dict is missing from newer Solr versions by mkalkbrenner
- Issue #3055858: require consolidation/annotated-command for Drush Commands by mkalkbrenner, kevinquillen
- Issue #3035232: Provide and test 8.x-1.x to 8.x-3.x upgrade path. by mkalkbrenner
- Issue #3056425: Getting exception when running a view with fulltext exposed filter by mkalkbrenner, claudiu.cristea
- Issue #3056038: Error when updating to 3.x by mkalkbrenner, claudiu.cristea
- Issue #3056281: Update documentation for Solr 8.x by mpp, mkalkbrenner
- Issue #3056251: sort field for "language undefined" is missing by mkalkbrenner
- Issue #3056063: Updating a Solr index definition does not always work correctly by cspitzlay, mkalkbrenner, hchonov
- Issue #3054827: Deactivated languages are still being downloaded in the config.zip by OanaIlea, mkalkbrenner
- Issue #3055734: Solarium Query set rows by FeyP
- Issue #3055274: Editing a custom field type shows " Undefined index: #type in drupal_process_states()" by mkalkbrenner, kevinquillen
- Issue #3054657: Increase Core version requirement to 8.6 by mkalkbrenner
- Issue #3054629: search-api-solr:get-server-config throws notice by mpp
- Issue #3052863: solr.MorphologikFilterFactory not found by mkalkbrenner
- Issue #3053644: provide statistics about document _version_ numbers by mkalkbrenner
- Issue #3053217: Solarium Query set rows by Keule, mkalkbrenner
- Issue #3052588: Namespace dependencies in search_api_solr.info file by Neslee Canil Pinto, mkalkbrenner
- Issue #3052810: Swedish config file has invalid line for accents file by kekkis, mkalkbrenner
- Issue #3052794: Swedish configuration uses wrong StemFilterFactory by kekkis
- Issue #3052792: Swedish configuration has 'no' as field_type_language_code by kekkis, mkalkbrenner
Changes since 8.x-3.0beta2
- Issue #3048298: Prevent usage of solr field manager caches in forms by hchonov
- Issue #3049033: Restore search_api_spellcheck feature by RoSk0, mkalkbrenner
- Issue #3050116: Missing @group annotation in AbstractSearchApiSolrTest by ChristianAdamski, mkalkbrenner
- Issue #3050475: SearchApiSolrBackend is setting incorrect prefix to Search API reverse entity references by xSDx, mkalkbrenner
- Issue #3050686: Add Spellcheck.q as otherwise no suggestions are returned by tim-diels, mkalkbrenner
- Issue #3051037: Multilingual spellchecking leads to Solr Exception by mkalkbrenner
- Issue #3051174: Solarium Expression is deprecated, use ExpressionBuilder by mkalkbrenner
- Issue #3051411: out of memory on Solr Cloud by OanaIlea, mkalkbrenner
- Issue #3051419: search_api_solr_devel should not omitHeaders and echo "all" parameters by mkalkbrenner
- Issue #3048751: Ukrainian lemmatization by OanaIlea, gnindl, mkalkbrenner
- Issue #3051657: out of memory on Solr Cloud, part 2 by mkalkbrenner
- Issue #3052155: Tests against Core 8.7.x are no longer allowed to fail by mkalkbrenner
- Issue #3043196: LatLonPointSpatialField by ChristianAdamski, mkalkbrenner
Changes since 8.x-3.0beta1
- Issue #3047092: require at least solarium 5.0.0-alpha.2 to fix facet issues by mkalkbrenner
- Issue #3043192: Solr 8 support by mkalkbrenner
Changes since 8.x-3.0alpha3
- Issue #3043165: Support new languages and update the old language configs by OanaIlea
- Issue #3046163: Use solarium 5.x by mkalkbrenner
- Issue #3044419: Allow term autocomplete queries on twm_suggest by mkalkbrenner
- Issue #3043874: wrong name for unstemmed Italien field type by mkalkbrenner
- Issue #3043832: Domain specific field types lead to incomplete configurations by mkalkbrenner
- Issue #3037910: Optional Schema for Simplified and Traditional Chinese by OanaIlea, mkalkbrenner
- Issue #3041444: Streaming Expressions: Exception when using StreamingExpressionBuilder::_all_doc_value_fields_list() by mkalkbrenner
- Issue #3026948: Add language-specific unstemmed fields by archana_prasad, mkalkbrenner
- Issue #3030006: The multilingual settings should be set per index instead per server by cspitzlay
- Issue #3029726: Provide command to delete all data for a solr server by mkalkbrenner, cspitzlay
- Issue #3038570: Mlt fatals by aspilicious
- Issue #2830636: Warn users about outdated config files by OanaIlea, mkalkbrenner
- Issue #3039149: Add Croatian default config by OanaIlea, mkalkbrenner
- Issue #3037946: japanese Spellcheck type has unknown parameter by OanaIlea, mkalkbrenner, Antares89
- Issue #3033693: Polish diacritics by OanaIlea, mkalkbrenner, Adrian Liegmann
- Issue #3039924: _all_fields_list() has to include boost_document by mkalkbrenner
- Issue #3039115: provide drush command to execute raw streaming expressions by mkalkbrenner
- Issue #3038618: StreamingExpressionQueryHelper::setStreamingExpression() should append an optional comment to the exprssion by mkalkbrenner
- Issue #3038617: StreamingExpressionBuilder::_all_fields_list() must exclude 'search_api_relevance' and 'search_api_random' by mkalkbrenner
- Issue #3038614: Ad drush command to finalizes indexes by mkalkbrenner
- Issue #3038612: Reject index finalization when index is disabled by mkalkbrenner
- Issue #3038608: Don't reindex disabled indexes when a language is added to the system by mkalkbrenner
- Issue #2717179: Extend config schema to support all filter classes by OanaIlea, mkalkbrenner
- Issue #3037917: Test against Solr 7.7.1 by mkalkbrenner
- Issue #3037885: Update sort fields when a language gets installed by mkalkbrenner
- Issue #3035491: Coding standards fixes by herved, mkalkbrenner
- Issue #3035681: SearchApiSolrBackend::getAutocompleteFields fails when query has no language assigned by herved, DiegoPino, mkalkbrenner
- Issue #3035583: Support topic() streaming expressions by mkalkbrenner
- Issue #3034798: search_api_solr_devel() misses a call to Index::alterIndexedItems() before preprocessing the items by mkalkbrenner
- Issue #3033660: Polish field type must not use protwords_de.txt by Adrian Liegmann
- Issue #2869146: Support language specific collations by mkalkbrenner, archana_prasad, OanaIlea
- Issue #3032909: Run integration tests against Solr 7.7.0 by mkalkbrenner
- Issue #3032324: Additionally run tests against Solr Cloud by mkalkbrenner
Changes since 8.x-3.0alpha2
- Issue #2912726: Update docker container to fix local testing by cspitzlay, mkalkbrenner
- Issue #3030448: Support per field type similarities by mkalkbrenner
- Issue #2891694: Search API Solr - Add Ludwig integration by bojanz, ressa, mkalkbrenner
- Issue #2848157: Add test for removeIndex() by mkalkbrenner, beltofte
- Issue #3001109: Reloading Solr collection by beltofte, mkalkbrenner
- Issue #3031295: search_api_solr_requirements() throws uncaught exception by mkalkbrenner
- Issue #3030253: Upgrade to solarium 4.3 and improve cloud connector by mkalkbrenner
- Issue #3030267: Rename solr-conf directory to solr-conf-templates by mkalkbrenner
- Issue #3030006: The multilingual settings should be set per index instead per server by mkalkbrenner
- Issue #3029536: Filtering by content type field doesn't work if more than one option is selected by mkalkbrenner, nicrodgers
- Issue #3029288: Searching for a single character without sort causes "SpanQuery is null" by mkalkbrenner
- Issue #3029277: Offline or empty Solr index causes exceptions in admin UI by mkalkbrenner, tseifert
- Issue #3015993: Error loading class 'solr.ICUCollationField' whilst setting up core by mkalkbrenner, geerlingguy, mpp, ressa, stevieegee
- Issue #3028883: Avoid redundant text files in Solr config sets by mkalkbrenner
- Issue #2828441: Multi-value properties not working by Chris Gillis, jeanfredrik
- Issue #3026901: Updating a cloned multisite index does not work correctly by mkalkbrenner, cspitzlay
- Issue #3028437: Move all sub-modules in modules folder by mkalkbrenner
- Issue #3028098: Search API Solr produces index config that fails schema check by mkalkbrenner
- Issue #3028096: Add missing schema for solr_cloud connector config by cspitzlay, mkalkbrenner
- Issue #3027792: Wrong descriptions for language and URl fields by mkalkbrenner, cspitzlay
- Issue #2920225: Index-time boosts not supported anymore by Solr 7, re-implement content type and html tag boosts by mkalkbrenner
- Issue #3027621: Devel integration should activate Solr Debug mode by mkalkbrenner
Changes since 8.x-3.0alpha1
- Issue #3026940: Wrong default language field for multisite indexes by mkalkbrenner
- Issue #3026904: Cloned multisite index: Multilingual support for fulltext fields is missing by cspitzlay, mkalkbrenner
- Issue #3001714: Highlighting problem on "Any Schema Backend" b petros, mkalkbrenner
- Issue #3026896: hook_search_api_solr_field_mapping_alter does not work as expected when cloning a multisite index by cspitzlay, mkalkbrenner
- Issue #3025700: Add upgrade path for deprecated Solr Filters by mkalkbrenner
- Issue #2900410: Add result grouping support by estoyausente, stdio, jamiehollern, squall3d, mkalkbrenner, Nixou, tomhollevoet
- Issue #3023603: Improve stemming for Dutch language by mpp, mkalkbrenner
- Issue #3023869: Add Dutch nouns by mpp, mkalkbrenner, rhansenne
- Issue #3026663: Importing an index config with solr_document data source fails if target index has no fields by tseifert, mkalkbrenner
- Issue #2949334: Turn site hash into state instead of configuration by mkalkbrenner, pfrenssen, cspitzlay
- Issue #2943876: Revise cron tasks and provide settings in the UI by mkalkbrenner
- Issue #3021067: Performance penalties on larger index on hook search_api_solr_search_api_items_indexed by mkalkbrenner, valic
- Issue #3026112: Remove obsolete cron task for spellcheck by mpp
- Issue #2989095: "Contains all of these words" leads to no results if the key words contain a stop word by mpp, webflo, mkalkbrenner
- Issue #3026112: Remove obsolete cron task for spellcheck by mpp
- Issue #3025828: Highlight "retrieved" fields instead of "queried" fields by mkalkbrenner
- Issue #3025615: search_api_solr should have an extra.drush.services section in its composer.json. by Spokje
- Issue #3024977: Upgrade Path: solr_string_ngram not handled when upgrading to 8.3.x by cspitzlay
- Issue #3024821: Streaming Expressions: Notice thrown in extractResults if search_api_language is not present in result docs by cspitzlay
- Issue #3024755: Streaming Expressions: Sort fields not recognized any more in StreamingExpressionBuilder by cspitzlay
- Issue #3024554: Solr 7.x: use docValues="true" for sm_* by mkalkbrenner
- Issue #3024543: Add the language as context for hook_search_api_solr_field_mapping_alter() by mkalkbrenner
- Issue #2735625: Add language-specific spell fields by damontgomery, mkalkbrenner
- Issue #3022896: Destinguish between ngram and edgengram, remove obsolete Solr 5 phonetic by mkalkbrenner
- Issue #3022997: language filters sometimes fail by mkalkbrenner
- Issue #3022332: Use PHP 7.3 for testing by mkalkbrenner
- Issue #3022342: Call to undefined method Drupal\search_api_solr\Entity\SolrFieldType::isManagedSchema() by mkalkbrenner
- Issue #3021235: Configuration import errors for text_zh_hans_6_0_0 by skilip, mkalkbrenner
Changes since 8.x-2.x
- Issue #3021023: 8.x-3.x: Create a Unified Solr Backend by mkalkbrenner
- Issue #3021951: Use Solr 7.6 for testing by mkalkbrenner
- Issue #2944673: Reimplement multisite searches by mkalkbrenner
- Issue #3021967: Support multilingual fields in streaming expressions by mkalkbrenner
- Issue #3021977: Don't distinguish between ss_* and sds_* anymore by mkalkbrenner