2026.06

Solr und MyCoRe

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.

Begrifflichkeiten

Index-Registry
Die zentrale Verwaltungskomponente fĂĽr alle Solr-Indizes einer MyCoRe-Anwendung. Die Implementierung 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 (index_id)
Eine eindeutige Kennung für einen Solr-Index innerhalb der MyCoRe-Anwendung. Die Standard-IDs sind 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-Typ (index_type)
Bestimmt, welche Art von Dokumenten in einem Index gespeichert wird. MyCoRe kennt die vordefinierten Typen 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).
ConfigSet
Eine Sammlung von Solr-Konfigurationsdateien (Schema, Konfiguration, Stoplisten etc.), die als Vorlage für einen neuen Solr-Core oder eine SolrCloud-Collection dient. MyCoRe liefert die ConfigSets mycore_main und mycore_classification direkt mit und ermöglicht es Anwendungen, diese zu erweitern.
Core / Collection
Im Standalone-Betrieb wird ein Solr-Index als Core bezeichnet, in der SolrCloud als Collection. Der tatsächliche Name auf dem Solr-Server wird über das Property MCR.Solr.IndexRegistry.Index.{index_id}.CoreName (Standalone) bzw. MCR.Solr.IndexRegistry.Index.{index_id}.CollectionName (SolrCloud) festgelegt.

Konfigurationsassistent

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.

Solr-Konfigurationsassistent
Bei SolrCloud mehrere URLs kommagetrennt angeben, z.B. http://solr1:8983/solr,http://solr2:8983/solr

Name des Solr-Kerns fĂĽr den Hauptindex (Core-Name auf dem Solr-Server).

Authentifizierung (optional)

Tika (optional)

Generierte Konfiguration

Die folgenden Properties können in die mycore.properties der Anwendung eingefügt werden.

Grundlegende Konfiguration

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

Standalone Solr

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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Haupt-Index
MCR.Solr.IndexRegistry.Index.main.Class=org.mycore.solr.standalone.core.MCRConfigurableSolrCore
MCR.Solr.IndexRegistry.Index.main.SolrUrl=http://localhost:8983/solr
MCR.Solr.IndexRegistry.Index.main.CoreName=mycore
MCR.Solr.IndexRegistry.Index.main.IndexTypes=main
MCR.Solr.IndexRegistry.Index.main.ConfigSetTemplate=mycore_main

# Klassifikations-Index (optional)
MCR.Solr.IndexRegistry.Index.classification.Class=org.mycore.solr.standalone.core.MCRConfigurableSolrCore
MCR.Solr.IndexRegistry.Index.classification.SolrUrl=http://localhost:8983/solr
MCR.Solr.IndexRegistry.Index.classification.CoreName=mycore-classifications
MCR.Solr.IndexRegistry.Index.classification.IndexTypes=classification
MCR.Solr.IndexRegistry.Index.classification.ConfigSetTemplate=mycore_classification

Solr-Core anlegen

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:

1
2
export solr configset mycore_main to folder /tmp/solr_configsets
export solr configset mycore_classification to folder /tmp/solr_configsets

Die erzeugten ZIP-Dateien werden in den Solr-ConfigSets-Ordner entpackt:

1
2
3
cd .../solr/server/solr/configsets
mkdir -p mycore_main/conf && unzip /tmp/solr_configsets/mycore_main.zip -d mycore_main/conf
mkdir -p mycore_classification/conf && unzip /tmp/solr_configsets/mycore_classification.zip -d mycore_classification/conf

AnschlieĂźend wird der Solr-Core angelegt:

1
2
.../solr/bin/solr create -c mycore -d mycore_main
.../solr/bin/solr create -c mycore-classifications -d mycore_classification

Nach dem Anlegen des Cores muss das Solr-Schema ĂĽber die MyCoRe-CLI geladen werden, damit alle anwendungsspezifischen Felder vorhanden sind:

1
2
reload solr configuration main in core main
reload solr configuration classification in core classification

SolrCloud (Solr-URL)

FĂĽr SolrCloud-Installationen steht die Klasse MCRConfigurableSolrCloudCollection bereit. Beim URL-basierten Zugang werden ein oder mehrere Solr-URLs (kommagetrennt) angegeben:

1
2
3
4
5
MCR.Solr.IndexRegistry.Index.main.Class=org.mycore.solr.cloud.collection.MCRConfigurableSolrCloudCollection
MCR.Solr.IndexRegistry.Index.main.SolrUrls=http://solr1:8983/solr,http://solr2:8983/solr
MCR.Solr.IndexRegistry.Index.main.CollectionName=mycore
MCR.Solr.IndexRegistry.Index.main.IndexTypes=main
MCR.Solr.IndexRegistry.Index.main.ConfigSetTemplate=mycore_main

SolrCloud (ZooKeeper)

Alternativ kann die SolrCloud ĂĽber ZooKeeper angebunden werden. Die ZooKeeper-Hosts werden kommagetrennt angegeben. Ein optionaler Chroot-Pfad kann ebenfalls definiert werden:

1
2
3
4
5
6
MCR.Solr.IndexRegistry.Index.main.Class=org.mycore.solr.cloud.collection.MCRConfigurableSolrCloudCollection
MCR.Solr.IndexRegistry.Index.main.ZkUrls=zk1:2181,zk2:2181,zk3:2181
MCR.Solr.IndexRegistry.Index.main.ZkChroot=/solr
MCR.Solr.IndexRegistry.Index.main.CollectionName=mycore
MCR.Solr.IndexRegistry.Index.main.IndexTypes=main
MCR.Solr.IndexRegistry.Index.main.ConfigSetTemplate=mycore_main

Einrichtung in der SolrCloud

In der SolrCloud werden ConfigSet und Collection über die MyCoRe-CLI angelegt. Zunächst wird das ConfigSet auf den SolrCloud-Server hochgeladen:

1
2
upload local config set for main
upload local config set for classification

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:

1
2
create collection for core main
create collection for core classification

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:

  • NRT-Replikate (NumNrtReplicas): Aktive Schreibreplikate, die den Leader ersetzen können.
  • TLOG-Replikate (NumTlogReplicas): Passive Replikate, die ĂĽber den Transaction-Log replizieren.
  • Pull-Replikate (NumPullReplicas): Reine Lesereplikate ohne Schreibfähigkeit.
1
2
3
4
5
6
7
8
9
# Globale Standardwerte (Fallback fĂĽr alle Indizes)
MCR.Solr.Default.ShardCount=1
MCR.Solr.Default.ReplicaCount=1

# Pro-Index-Konfiguration (ĂĽberschreibt den globalen Standard)
MCR.Solr.IndexRegistry.Index.main.NumShards=2
MCR.Solr.IndexRegistry.Index.main.NumNrtReplicas=1
MCR.Solr.IndexRegistry.Index.main.NumTlogReplicas=1
MCR.Solr.IndexRegistry.Index.main.NumPullReplicas=0

Authentifizierung

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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
MCR.Solr.Server.Auth.Admin.Class=org.mycore.solr.auth.MCRSolrPropertyBasicAuthenticator
MCR.Solr.Server.Auth.Admin.Username=solr-admin
MCR.Solr.Server.Auth.Admin.Password=geheim123

MCR.Solr.Server.Auth.Index.Class=org.mycore.solr.auth.MCRSolrPropertyBasicAuthenticator
MCR.Solr.Server.Auth.Index.Username=solr-indexer
MCR.Solr.Server.Auth.Index.Password=geheim321

MCR.Solr.Server.Auth.Search.Class=org.mycore.solr.auth.MCRSolrPropertyBasicAuthenticator
MCR.Solr.Server.Auth.Search.Username=solr-searcher
MCR.Solr.Server.Auth.Search.Password=geheim231

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.

HTTP-Client Konfiguration

Die Verbindungsparameter des Solr-HTTP-Clients können über Properties angepasst werden. MyCoRe verwendet standardmäßig den Jetty HTTP-Client:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# HTTP-Client
MCR.Solr.Default.UseJettyHttpClient=true
MCR.Solr.Default.Client.ConnectionTimeout=0
MCR.Solr.Default.Client.ConnectionTimeout.Unit=MILLISECONDS
MCR.Solr.Default.Client.IdleTimeout=50000
MCR.Solr.Default.Client.IdleTimeout.Unit=MILLISECONDS
MCR.Solr.Default.Client.RequestTimeout=50000
MCR.Solr.Default.Client.RequestTimeout.Unit=MILLISECONDS

# Parallele Indexierung
MCR.Solr.Default.ConcurrentClient.Enabled=true
MCR.Solr.Default.ConcurrentClient.QueueSize=100
MCR.Solr.Default.ConcurrentClient.ThreadCount=%MCR.Solr.Indexer.ThreadCount%

ConfigSets laden und erweitern

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:

1
2
3
MCR.Solr.ConfigSet.mycore_main.Class=org.mycore.solr.cloud.configsets.MCRSolrResourceConfigSetProvider
MCR.Solr.ConfigSet.mycore_main.Base=configset/mycore_main/conf/
MCR.Solr.ConfigSet.mycore_main.Files=managed-schema,solrconfig.xml,stopwords.txt,synonyms.txt

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:

1
2
# In der Anwendung (mycore.properties):
MCR.Solr.ConfigSet.mycore_main.Files=%MCR.Solr.ConfigSet.mycore_main.Files%,meine-synonyme.txt

Solr-Schema und Konfiguration erweitern

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.

Verzeichnisstruktur

Die JSON-Dateien werden unter folgenden Pfaden in den Modulen abgelegt:

1
2
3
4
5
6
7
# MyCoRe-Kernmodul:
src/main/resources/components/{module_name}/config/solr/{index_type}/solr-schema.json
src/main/resources/components/{module_name}/config/solr/{index_type}/solr-config.json

# Anwendungsmodul (z.B. MIR):
src/main/resources/config/{application_name}/solr/{index_type}/solr-schema.json
src/main/resources/config/{application_name}/solr/{index_type}/solr-config.json

Schema erweitern (solr-schema.json)

Die Datei enthält ein JSON-Array mit Befehlen der Solr Schema API. Folgende Operationen stehen zur Verfügung:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[
  {
    "add-field-type": {
      "name": "mein_typ",
      "class": "solr.TextField",
      "positionIncrementGap": "100",
      "analyzer": {
        "tokenizer": { "class": "solr.StandardTokenizerFactory" },
        "filters": [{ "class": "solr.LowerCaseFilterFactory" }]
      }
    }
  },
  {
    "add-field": {
      "name": "mein_feld",
      "type": "text_general",
      "stored": true,
      "indexed": true,
      "multiValued": false
    }
  },
  {
    "add-copy-field": {
      "source": "mein_feld",
      "dest": "_text_"
    }
  },
  {
    "replace-field": {
      "name": "title",
      "type": "text_general",
      "stored": true,
      "indexed": true,
      "multiValued": true
    }
  }
]

Solr-Konfiguration erweitern (solr-config.json)

Analog zum Schema können Request-Handler und andere Solr-Konfigurationsbestandteile über die Solr Config API hinzugefügt werden:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[
  {
    "add-requesthandler": {
      "name": "/mein-handler",
      "class": "solr.SearchHandler",
      "defaults": {
        "echoParams": "explicit",
        "rows": 10,
        "df": "title"
      }
    }
  }
]

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:

1
MCR.Solr.ObserverConfigTypes.requestHandler.toClean=/mein-handler

Das Solr-Document

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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <!-- Importiert die MyCoRe-Basistransformation und hängt sich in die Kette ein -->
    <xsl:import href="xslImport:solr-document:mein-modul2solr.xsl"/>

    <!-- Felder fĂĽr eigene Dokumenttypen hinzufĂĽgen -->
    <xsl:template match="mycoreobject[contains(@ID,'_meintyp_')]">
        <xsl:apply-imports/>
        <field name="mein_suchfeld">
            <xsl:value-of select="./metadata/def.meinFeld/meinFeld/text()"/>
        </field>
    </xsl:template>

</xsl:stylesheet>

Das eigene Stylesheet wird über ein Property in die Import-Kette eingehängt:

1
MCR.URIResolver.xslImports.solr-document=%MCR.URIResolver.xslImports.solr-document%,mein-modul2solr.xsl

Der an Solr ausgehende Datenstrom kann im Browser mit der URL https://{anwendung}/receive/{mycore_id}?XSL.Style=solrdocument geprĂĽft werden.

Textextraktion mit Tika

FĂĽr die Volltextindexierung von Dokumenten (PDF, Word etc.) empfiehlt MyCoRe den Einsatz eines externen Apache Tika-Servers. Die Konfiguration erfolgt ĂĽber folgende Properties:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Tika-Server aktivieren
MCR.Solr.FileIndexStrategy=org.mycore.solr.index.file.tika.MCRTikaSolrFileStrategy
MCR.Solr.Tika.ServerURL=http://tika:9998

# Maximale Dateigröße (Standard: 1 GB)
MCR.Solr.Tika.MaxFileSize=1073741824

# Tika-Feld-Mapping: Standard-Mapper (ignoriert unbekannte Felder)
MCR.Solr.Tika.Mapper.Default.Class=org.mycore.solr.index.file.tika.MCRTikaNOPMapper

# Volltext in Solr-Feld "content" schreiben
MCR.Solr.Tika.Mapper.x_tika_content.Class=org.mycore.solr.index.file.tika.MCRSimpleTikaMapper
MCR.Solr.Tika.Mapper.x_tika_content.StripNamespace=true
MCR.Solr.Tika.Mapper.x_tika_content.MultiValueField=true

# Dateien, die nicht an Tika gesendet werden (Regex)
MCR.Solr.Tika.IgnoredFiles=/alto/.*[.]xml,/mets[.]xml

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.

Eigene Request-Handler

MyCoRe erlaubt standardmäßig nur die Request-Handler /select und /update. Weitere Handler müssen in der Whitelist eingetragen werden:

1
MCR.Solr.Proxy.WhiteList=%MCR.Solr.Proxy.WhiteList%,/mein-handler

Properties-Referenz

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

Solr-Kommandos

Achtung: Solr-Kommandos sollten stets im interaktiven Modus der CLI ausgeführt werden, um sicherzustellen, dass Operationen vollständig abgeschlossen werden.

Index-Verwaltung

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.

SolrCloud-Kommandos

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.

Indexierungs-Kommandos

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).

Solr-Abfragen ĂĽber die Java-API

Ab MyCoRe 2026.06 erfolgt der Zugriff auf Solr-Clients ĂĽber die Index-Registry. Die Authentifizierung muss dabei immer berĂĽcksichtigt werden:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.mycore.solr.MCRSolrIndex;
import org.mycore.solr.MCRSolrIndexRegistryManager;
import org.mycore.solr.auth.MCRSolrAuthenticationLevel;
import org.mycore.solr.auth.MCRSolrAuthenticationManager;

// Index ĂĽber die Registry beziehen (gibt Optional zurĂĽck)
MCRSolrIndex mainIndex = MCRSolrIndexRegistryManager.obtainRegistry()
    .getIndex("main")
    .orElseThrow(() -> new IllegalStateException("Kein Solr-Index 'main' konfiguriert"));

// getClient() liefert einen SolrClient mit voreingestellter Collection/Core
SolrClient solrClient = mainIndex.getClient();

// Suchanfrage mit Authentifizierung
SolrQuery query = new SolrQuery();
query.setQuery("title:foo");
query.setRows(10);

QueryRequest queryRequest = new QueryRequest(query);
MCRSolrAuthenticationManager.obtainInstance()
    .applyAuthentication(queryRequest, MCRSolrAuthenticationLevel.SEARCH);

try {
    QueryResponse response = queryRequest.process(solrClient);
    // response.getResults() enthält die Treffer
} catch (Exception e) {
    // Fehlerbehandlung
}