Message-ID: <1728675690.2902.1485851178692.JavaMail.confluence@ip-10-127-227-164> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_2901_256812094.1485851178692" ------=_Part_2901_256812094.1485851178692 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
5.4.X >=3D 5.4.5
Support for Solr Search Engine Bundle when used in eZ Publish 5.4 with l= egacy is limited, as the legacy integration is done by Netgen's ezplatformsearch, a third party community-supported extension= .
For instructions on the bundle for eZ Platform= , see Solr Search Engine= Bundle in the eZ Platform Developer documentation.
Version 1.0.x of Solr Bundle primarily aims to be drop in replacem= ent for Legacy (SQL based) search engine for better scalability and perform= ance (mainly with field criteria and sort clauses). And while it a= lso provides better full text search thanks to Solr, more advance search fe= atures like Faceting, Spellchecking, plugin system, .. will come in later r= eleases, most for for newer versions of eZ Platform only. See 5.4.5 Release Notes for further info.= span>
ezplatform-solr-search-engine&n=
bsp;as the package is called, aims to be a transparent drop in replacement =
for the SQL based "Legacy" search engine powering Search API by default. By=
enabling Solr and re-indexing your content, all your exising Search querie=
s using SearchService, will be powered by Solr automatically. This allows y=
ou to scale up your eZ Publish Platform installation and be able to continu=
e development locally against SQL engine, and have test infrastructure, Sta=
ging and Prod powered by Solr. Thus remove considerable load from your data=
base so it can focus on more important things, like publishing .
Se Architecture page<= /a> for further information on the architecture of eZ Publish= Platform and eZ Platform.
In this step you'll enable the Solr Search Engine Bundle which handles i= ndexing on all updates to Platform stack API, and to handle all search quer= ies going to Search Service.
composer require --no-update ezsystems/ezplatform-solr-search-engi= ne:~1.0 composer update=20
Activate EzPublishSolrSearchEngineBundle
by adding the =
following lines to your ezpublish/EzPublishKernel.php
file:
new EzSys= tems\EzPlatformSolrSearchEngineBundle\EzSystemsEzPlatformSolrSearchEngineBundle()
Being on 5.x, you'll need to also make sure searches in legacy (like= in admin interface) is using the new solr search engine, this functio= nality is provided by ezplatformsearch extens= ion made by NetGen.
Add/Update composer dependencies:
composer require netgen/ezplatformsearch:~1.1=20
Activate extension in site.ini
, typically e=
zpublish_legacy/settings/override/site.ini.append.php
[ExtensionSettings] ActiveExtensions[]=3Dezplatformsearch # Also make sure to comment out or remove any occurrence of other search en= gines like ezfind #ActiveExtensions[]=3Dezfind=20
First download and extract Solr, we currently support Solr 4.10.= 4:
Secondly, copy configuration files needed for eZ Solr Search Engine bund= le, here from root of your project to the place you extracted Solr= :
# Make sure to change the /opt/solr/ path with where you have plac= ed Solr cp -R vendor/ezsystems/ezplatform-solr-search-engine/lib/Resources/config/s= olr/* /opt/solr/example/solr/collection1/conf/ /opt/solr/bin/solr start -f=20
Thirdly, Solr Bundle does not commit solr index changes directly on=
repository updates, leaving it up to you to tune this using sol=
rconfig.xml
as best practice suggests, example config:
<autoCommit> <!-- autoCommit is here left as-is like it is out of the box in Solr 4= .10.4, this controls hard commits for durability/replication --> <maxTime>${solr.autoCommit.maxTime:15000}</maxTime>=20 <openSearcher>false</openSearcher>=20 </autoCommit> <autoSoftCommit> <!-- Soft commits controls mainly when changes becomes visible, by def= ault we change value from -1 (disabled) to 100ms, to try to strike a balanc= e between Solr performance and staleness of HttpCache generated by Solr que= ries --> <maxTime>${solr.autoSoftCommit.maxTime:100}</maxTime>=20 </autoSoftCommit>=20
The Solr search engine bundle can be configured many ways, here are some= examples
Out of the box in eZ Platform the following is enabled for simple setup:=
ez_search_engine_solr: endpoints: endpoint0: dsn: %solr_dsn% core: collection1 connections: default: entry_endpoints: - endpoint0 mapping: default: endpoint0=20
In the following example we have decided to separate one language as ins= tall contains several similar languages, and one very different language th= at should be recive proper language analysis for proper stemming and sortin= g behavior by Solr:
ez_search_engine_solr: endpoints: endpoint0: dsn: %solr_dsn% core: core0 endpoint1: dsn: %solr_dsn% core: core1 connections: default: entry_endpoints: - endpoint0 - endpoint1 mapping: translations: jpn-JP: endpoint1 # Other languages, for instance eng-US and other western la= nguages are sharing core default: endpoint0=20
If full language analysis features are preferred, then each language can= be configured to separate cores.
Note: Please make sure to test this setup against single core as it = might perform worse then single core if your project uses a lot for languag= e fallbacks per SiteAccess as queries will then be perf= ormed across several cores at once.
ez_search_engine_solr: endpoints: endpoint0: dsn: %solr_dsn% core: core0 endpoint1: dsn: %solr_dsn% core: core1 endpoint2: dsn: %solr_dsn% core: core2 endpoint3: dsn: %solr_dsn% core: core3 endpoint4: dsn: %solr_dsn% core: core4 endpoint5: dsn: %solr_dsn% core: core5 endpoint6: dsn: %solr_dsn% core: core6 connections: default: entry_endpoints: - endpoint0 - endpoint1 - endpoint2 - endpoint3 - endpoint4 - endpoint5 - endpoint6 mapping: translations: jpn-JP: endpoint1 eng-US: endpoint2 fre-FR: endpoint3 ger-DE: endpoint4 esp-ES: endpoint5 # Not really used, but specified here for fallback if more = languages are suddenly added by content admins default: endpoint0 # Also use separate core for main languages (differs from c= ontent object to content object) # This is useful to reduce number of cores queried for alwa= ys available language fallbacks main_translations: endpoint6=20
The following is an example of configuring Solr Search Engine, whe=
re connection
name is same as in example above, and =
engine is set to be solr
:
ezpublish: repositories: main: storage: engine: legacy connection: default # This should be the connection you had= from before for repository search: engine: solr # One of legacy (default) or solr connection: default # If legacy same as storage applies, if= solr use same as you defined in step 3=20
Config in 5.4.5 and eZ Platform
In eZ Publish 5.4.5 when installed via composer create-project, the exam=
ple above is in default config with one small difference (same as on eZ=
Platform). There search.engine
is set to %search_e=
ngine%
, which is a parameter that needs to be set in parameters.yml,=
and for use with Solr it will needs to be set to "solr"
as de=
scribed in parameters.yml.dist, and as described above.
While Symfony dev environment keeps track of changes to yml files, prod = does not, so to make sure Symfony reads the new config we clear cache:
php ezpublish/console --env=3Dprod cache:clear=20
Last step is to execute initial indexation of data:
php ezpublish/console --env=3Dprod --siteaccess=3D<name> ezp= latform:solr_create_index=20
Known issues
If you have issues using the indexing command there are some known issue= s and how you resolve them listed in the 5.4.5 Release Notes.
After completing the installation you are now free to use your site as u= sual. If you get any excpetions for missing features, have feedback on perf= ormance, or want to discuss, join our community slack channel at https://ezcommunity.slack.com/messages/ezplatfo= rm-use/