Dieses Kapitel beschreibt die Einbindung von Apache Solr in MyCoRe ab Release 2026.06. Die Solr-Integration wurde grundlegend ĂĽberarbeitet und setzt auf ein flexibles, klassenbasiertes Index-Registry-Konzept, das Standalone- und SolrCloud-Betrieb gleichermaĂźen unterstĂĽtzt.
Falls noch kein Solr-Server zur Verfügung steht, kann er gemäß der Anleitung im Abschnitt Einrichtung eines Solr-Servers installiert werden. MyCoRe 2026.06 wird mit Apache Solr 9.x eingesetzt.
MCRConfigurableIndexRegistry liest die Konfiguration
aus MyCoRe-Properties und erstellt daraus konfigurierbare Index-Instanzen.
Konfiguriert wird sie ĂĽber das Property MCR.Solr.IndexRegistry.Class.
index_id)main (Metadaten-Index) und classification
(Klassifikations-Index). Weitere Index-IDs können für spezielle Anwendungsfälle definiert werden.
Die Index-ID wird als Teil des Property-Pfades verwendet:
MCR.Solr.IndexRegistry.Index.{index_id}.*
index_type)main und classification. Der Index-Typ
steuert auch, welche solr-schema.json- und solr-config.json-Dateien
aus den MyCoRe-Modulen in den Index geladen werden.
Ein Index kann mehrere Typen haben (Mehrfach-Indexierung).
mycore_main und mycore_classification
direkt mit und ermöglicht es Anwendungen, diese zu erweitern.
MCR.Solr.IndexRegistry.Index.{index_id}.CoreName (Standalone) bzw.
MCR.Solr.IndexRegistry.Index.{index_id}.CollectionName (SolrCloud) festgelegt.
Mit dem folgenden Assistenten können die MyCoRe-Properties für die Solr-Anbindung komfortabel
zusammengestellt werden. Die generierten Properties können direkt in die
mycore.properties der Anwendung ĂĽbernommen werden.
http://solr1:8983/solr,http://solr2:8983/solr
Die folgenden Properties können in die mycore.properties der Anwendung eingefügt werden.
Ab MyCoRe 2026.06 erfolgt die Solr-Konfiguration ĂĽber das Index-Registry-Konzept.
Jeder Solr-Index wird als eigenständige, konfigurierbare Instanz in der Registry registriert.
Das Property MCR.Solr.IndexRegistry.Class bestimmt die Implementierungsklasse der Registry
(Standard: MCRConfigurableIndexRegistry).
Alle Index-Properties folgen dem Schema:
MCR.Solr.IndexRegistry.Index.{index_id}.{eigenschaft}=wert
FĂĽr eine klassische Standalone-Solr-Installation wird die Klasse
MCRConfigurableSolrCore verwendet.
Die Konfiguration besteht aus der Solr-URL, dem Core-Namen sowie dem Index-Typ:
|
|
Die ConfigSets werden aus der MyCoRe-Anwendung heraus exportiert und dann in Solr eingespielt. Da Anwendungen die ConfigSets erweitern können, muss das vollständige ConfigSet über die MyCoRe-Kommandozeile generiert werden:
|
|
Die erzeugten ZIP-Dateien werden in den Solr-ConfigSets-Ordner entpackt:
|
|
AnschlieĂźend wird der Solr-Core angelegt:
|
|
Nach dem Anlegen des Cores muss das Solr-Schema ĂĽber die MyCoRe-CLI geladen werden, damit alle anwendungsspezifischen Felder vorhanden sind:
|
|
FĂĽr SolrCloud-Installationen steht die Klasse MCRConfigurableSolrCloudCollection bereit.
Beim URL-basierten Zugang werden ein oder mehrere Solr-URLs (kommagetrennt) angegeben:
|
|
Alternativ kann die SolrCloud ĂĽber ZooKeeper angebunden werden. Die ZooKeeper-Hosts werden kommagetrennt angegeben. Ein optionaler Chroot-Pfad kann ebenfalls definiert werden:
|
|
In der SolrCloud werden ConfigSet und Collection über die MyCoRe-CLI angelegt. Zunächst wird das ConfigSet auf den SolrCloud-Server hochgeladen:
|
|
Das ConfigSet wird in der SolrCloud unter dem Namen {index_id}_{configset_name} gespeichert,
also z.B. main_mycore_main. Danach wird die Collection angelegt:
|
|
Die Anzahl der Shards und Replikate können global als Default oder pro Index konfiguriert werden. Für SolrCloud unterstützt MyCoRe drei Replikat-Typen:
NumNrtReplicas): Aktive Schreibreplikate, die den Leader ersetzen können.NumTlogReplicas): Passive Replikate, die über den Transaction-Log replizieren.NumPullReplicas): Reine Lesereplikate ohne Schreibfähigkeit.
|
|
MyCoRe unterstützt die HTTP Basic Authentication gegenüber Solr. Es können drei verschiedene Benutzerrollen konfiguriert werden, die auf unterschiedliche Solr-Rechte abgebildet werden:
| Rolle | Verwendung | Benötigte Solr-Rechte |
|---|---|---|
Admin |
Verwaltungsoperationen (Collections erstellen, ConfigSets hochladen) | all |
Index |
Indexierung von Dokumenten | read, update |
Search |
Suchanfragen | read |
Ohne Konfiguration verwendet MyCoRe keinen Authentifizierungsheader (Klasse MCRSolrNoOpAuthenticator).
Zur Aktivierung der Basic Authentication:
|
|
Die Authentifizierungskonfiguration wird in der security.json auf dem Solr-Server gepflegt.
Bei mehreren Anwendungen auf demselben Solr-Server empfiehlt es sich, fĂĽr jede Anwendung eigene
Benutzer mit core-spezifischen Rechten anzulegen.
Die Verbindungsparameter des Solr-HTTP-Clients können über Properties angepasst werden. MyCoRe verwendet standardmäßig den Jetty HTTP-Client:
|
|
MyCoRe liefert die ConfigSets mycore_main und mycore_classification direkt mit.
Anwendungen können diese über den
Resource-Resolver-Mechanismus ĂĽberschreiben oder erweitern.
Die ConfigSet-Konfiguration erfolgt ĂĽber Properties:
|
|
Base gibt den Basispfad im Classpath an, unter dem die Konfigurationsdateien gesucht werden.
Files listet alle Dateien auf, die in das ConfigSet-ZIP-Archiv gepackt werden.
Der Resource-Resolver priorisiert Dateien aus der Anwendung gegenĂĽber den Framework-Defaults,
sodass einzelne Dateien (z.B. synonyms.txt) überschrieben werden können, indem sie
an der gleichen relativen Pfadposition in den Ressourcen der Anwendung abgelegt werden.
Um eigene Dateien zum ConfigSet hinzuzufĂĽgen, muss das Property Files in der
Anwendung erweitert werden:
|
|
MyCoRe-Module und Anwendungsmodule können das Solr-Schema und die Solr-Konfiguration über
JSON-Dateien erweitern. Diese Dateien werden ĂĽber die Solr Schema API bzw. Config API in
den Core eingespielt, wenn das Kommando reload solr configuration {type} in core {id}
ausgefĂĽhrt wird.
Die JSON-Dateien werden unter folgenden Pfaden in den Modulen abgelegt:
|
|
Die Datei enthält ein JSON-Array mit Befehlen der Solr Schema API. Folgende Operationen stehen zur Verfügung:
|
|
Analog zum Schema können Request-Handler und andere Solr-Konfigurationsbestandteile über die Solr Config API hinzugefügt werden:
|
|
Eigene Request-Handler müssen zusätzlich in der MyCoRe-Whitelist freigegeben werden (siehe
Eigene Request-Handler).
Beim Reload der Konfiguration werden zuvor definierte Konfigurations-Elemente automatisch
bereinigt, wenn sie im Property MCR.Solr.ObserverConfigTypes.{type}.toClean
aufgefĂĽhrt sind:
|
|
MyCoRe-Objekte werden ĂĽber eine XSLT-Transformationskette in Solr-Documents ĂĽberfĂĽhrt.
Die Kette wird ĂĽber das Property MCR.URIResolver.xslImports.solr-document gesteuert.
Anwendungsmodule können eigene XSLT-Stylesheets in diese Kette einhängen:
|
|
Das eigene Stylesheet wird über ein Property in die Import-Kette eingehängt:
|
|
Der an Solr ausgehende Datenstrom kann im Browser mit der URL
https://{anwendung}/receive/{mycore_id}?XSL.Style=solrdocument geprĂĽft werden.
FĂĽr die Volltextindexierung von Dokumenten (PDF, Word etc.) empfiehlt MyCoRe den Einsatz eines externen Apache Tika-Servers. Die Konfiguration erfolgt ĂĽber folgende Properties:
|
|
Der MCRSimpleTikaMapper schreibt den Wert eines Tika-JSON-Keys in ein Solr-Feld.
Der Feldname wird aus dem JSON-Key abgeleitet (Sonderzeichen entfernt, Kleinbuchstaben).
Das JSON-Feld X-TIKA:content wird so zum Solr-Feld content.
MyCoRe erlaubt standardmäßig nur die Request-Handler /select und /update.
Weitere Handler mĂĽssen in der Whitelist eingetragen werden:
|
|
| Property | Bedeutung | Standard |
|---|---|---|
MCR.Solr.IndexRegistry.Class |
Implementierungsklasse der Index-Registry | MCRConfigurableIndexRegistry |
MCR.Solr.IndexRegistry.Index.{id}.Class |
Klasse des Index: MCRConfigurableSolrCore (Standalone) oder
MCRConfigurableSolrCloudCollection (Cloud) |
– |
MCR.Solr.IndexRegistry.Index.{id}.SolrUrl |
Solr-URL für Standalone-Betrieb | – |
MCR.Solr.IndexRegistry.Index.{id}.CoreName |
Core-Name auf dem Solr-Server (Standalone) | – |
MCR.Solr.IndexRegistry.Index.{id}.SolrUrls |
Kommagetrennte Solr-URLs für SolrCloud (URL-Modus) | – |
MCR.Solr.IndexRegistry.Index.{id}.ZkUrls |
ZooKeeper-Hosts fĂĽr SolrCloud (ZK-Modus), z.B. zk1:2181,zk2:2181 |
– |
MCR.Solr.IndexRegistry.Index.{id}.ZkChroot |
ZooKeeper Chroot-Pfad (optional), z.B. /solr |
– |
MCR.Solr.IndexRegistry.Index.{id}.CollectionName |
Collection-Name in der SolrCloud | – |
MCR.Solr.IndexRegistry.Index.{id}.IndexTypes |
Kommagetrennte Index-Typen dieses Index (z.B. main) |
– |
MCR.Solr.IndexRegistry.Index.{id}.ConfigSetTemplate |
Name des ConfigSets, das für diesen Index verwendet wird | – |
MCR.Solr.ConfigSet.{name}.Class |
Klasse des ConfigSet-Providers (Standard: MCRSolrResourceConfigSetProvider) |
– |
MCR.Solr.ConfigSet.{name}.Base |
Basispfad im Classpath für die ConfigSet-Dateien | – |
MCR.Solr.ConfigSet.{name}.Files |
Kommagetrennte Liste der Dateien im ConfigSet | – |
MCR.Solr.Server.Auth.{Admin|Index|Search}.Class |
Authentifizierungsklasse (Standard: MCRSolrNoOpAuthenticator) |
MCRSolrNoOpAuthenticator |
MCR.Solr.Server.Auth.{Admin|Index|Search}.Username |
Benutzername für Basic Authentication | – |
MCR.Solr.Server.Auth.{Admin|Index|Search}.Password |
Passwort für Basic Authentication | – |
MCR.Solr.Default.UseJettyHttpClient |
Jetty HTTP-Client verwenden | true |
MCR.Solr.Default.Client.IdleTimeout |
Idle-Timeout des HTTP-Clients in Millisekunden | 50000 |
MCR.Solr.Default.Client.RequestTimeout |
Request-Timeout des HTTP-Clients in Millisekunden | 50000 |
MCR.Solr.Default.ShardCount |
Standard-Anzahl der Shards bei Collection-Erstellung (Fallback fĂĽr NumShards) |
1 |
MCR.Solr.Default.ReplicaCount |
Standard-Anzahl der NRT-Replikate bei Collection-Erstellung (Fallback fĂĽr NumNrtReplicas) |
1 |
MCR.Solr.IndexRegistry.Index.{id}.NumShards |
Anzahl Shards fĂĽr diese Collection (SolrCloud); ĂĽberschreibt MCR.Solr.Default.ShardCount |
– |
MCR.Solr.IndexRegistry.Index.{id}.NumNrtReplicas |
Anzahl NRT-Replikate (aktive Schreibreplikate); ĂĽberschreibt MCR.Solr.Default.ReplicaCount |
– |
MCR.Solr.IndexRegistry.Index.{id}.NumTlogReplicas |
Anzahl TLOG-Replikate (passive Replikate via Transaction-Log), optional | – |
MCR.Solr.IndexRegistry.Index.{id}.NumPullReplicas |
Anzahl Pull-Replikate (reine Lesereplikate), optional | – |
MCR.Solr.Default.ConcurrentClient.Enabled |
Parallele Indexierung aktivieren | true |
MCR.Solr.Default.ConcurrentClient.QueueSize |
Warteschlangengröße für parallele Indexierung | 100 |
MCR.Solr.Indexer.BulkSize |
Anzahl Objekte pro Batch-Indexierung | 100 |
MCR.Solr.Indexer.ThreadCount |
Anzahl der Indexierungs-Threads | 4 |
MCR.Solr.FileIndexStrategy |
Strategie fĂĽr die Datei-Indexierung | MCRSolrMimeTypeStrategie |
MCR.Solr.Tika.ServerURL |
URL des Tika-Servers (aktiviert Tika-Extraktion) | – |
MCR.Solr.Tika.MaxFileSize |
Maximale Dateigröße für Tika in Bytes | 1073741824 (1 GB) |
MCR.Solr.Proxy.WhiteList |
Erlaubte Solr Request-Handler | /select |
MCR.URIResolver.xslImports.solr-document |
XSLT-Import-Kette fĂĽr die Solr-Document-Generierung | solr/indexing/solr-basetemplate.xsl |
Achtung: Solr-Kommandos sollten stets im interaktiven Modus der CLI ausgeführt werden, um sicherzustellen, dass Operationen vollständig abgeschlossen werden.
| Kommando | Beschreibung |
|---|---|
show solr configuration |
Zeigt die aktuelle Solr-Konfiguration der Anwendung an. |
reload solr configuration {type} in core {id} |
Lädt Schema und Konfiguration für den angegebenen Core neu (z.B. reload solr configuration main in core main). |
export solr configset {name} to folder {path} |
Exportiert ein ConfigSet als ZIP-Archiv in den angegebenen Ordner. |
| Kommando | Beschreibung |
|---|---|
show local config sets |
Listet alle lokal konfigurierten ConfigSets auf. |
show remote config sets |
Listet die ConfigSets auf dem Solr-Server auf. |
upload local config set for {id} |
Lädt das ConfigSet für den angegebenen Index-ID auf den Solr-Server hoch. |
delete remote config set for {id} |
Löscht das ConfigSet des angegebenen Index vom Solr-Server. |
create collection for core {id} |
Erstellt eine neue SolrCloud-Collection fĂĽr den angegebenen Index. |
remove collection for core {id} |
Entfernt die SolrCloud-Collection des angegebenen Index. |
| Kommando | Beschreibung |
|---|---|
rebuild solr metadata and content index in core {id} |
Indexiert alle Metadaten und Dateien im angegebenen Core neu. |
rebuild solr metadata index in core {id} |
Indexiert alle Objekte neu (nur Metadaten). |
rebuild solr content index in core {id} |
Indexiert alle Derivate und Dateien neu. |
rebuild solr metadata index for all objects of type {type} in core {id} |
Indexiert alle Objekte des angegebenen Typs neu. |
rebuild solr classification index in core {id} |
Indexiert alle Klassifikationen neu. |
clear solr index in core {id} |
Löscht alle Einträge aus dem Index. |
synchronize solr metadata index in core {id} |
Synchronisiert den MyCoRe-Store mit dem Solr-Index. |
optimize solr index in core {id} |
Optimiert den Solr-Index (selten ausfĂĽhren, da ressourcenintensiv). |
Ab MyCoRe 2026.06 erfolgt der Zugriff auf Solr-Clients ĂĽber die Index-Registry. Die Authentifizierung muss dabei immer berĂĽcksichtigt werden:
|
|