2016-04-05 6 views
0

Wir haben eine Reihe von solr schema.xml Dateien, die alle fast identisch sind. Es wäre großartig, wenn wir die gemeinsamen Teile herausziehen und in ein Basisschema einfügen könnten, das wir dann in benutzerdefinierten Schemadateien überschreiben.Ist es möglich, ein Basis-Solr-Schema zu erstellen?

Ein Blick auf meinen Schema-Dateien, etwa 1/7. jede Datei ist Brauch und der Rest ist, den vorformulierten und zentralisiert werden kann herausgezogen.

Gibt es eine Möglichkeit, dies zu tun?

Antwort

1

Wenn Sie dies tun möchten, ist Solr selbst dann glaube ich nicht, dass das möglich ist.

Alternativ können Sie eine Kopie Ihres Basisschemas verwenden, die Sie bei jedem Erstellen eines neuen Kerns/einer neuen Sammlung verwenden und dann das Schema api verwenden, um die erforderlichen Änderungen vorzunehmen. Dies erfordert jedoch, dass Sie etwas Code schreiben oder zumindest einige API-Aufrufe tätigen.

+0

Also ich denke dieser Ansatz bedeutet, dass wir eine Basis haben und dann unsere Anpassungen in Python-Aufrufe an die Schema-API kodieren. Wir erstellen Kerne nur programmgesteuert, damit dies funktioniert. Ich mag nicht, wie getrennt die schema.xml-Dateien vom Python-Code sind, aber es könnte die beste/einzige Lösung sein. – mlissner

+0

Eine weitere Idee, die mir einfällt, ist die Verwendung dynamischer Felder. Sie können Ihr Basisschema als explizit definierte Felder und die anderen verschiedenen Felder als einen Host für dynamische Felder definieren. Das würde bedeuten, dass Sie fortgeschrittene Kenntnisse über alle möglichen Felder haben, die auftauchen könnten, damit Sie die dynamischen Felder entsprechend erstellen können, aber es würde auch bedeuten, dass Sie nur ein einziges Schema benötigen. –

+0

Keine schlechte Idee, aber wir geben die Feldnamen den Benutzern frei, damit sie Abfragen wie 'org: foo' ausführen können. Wenn wir dynamische Felder verwenden, müssen sich unsere Feldnamen ändern. – mlissner

0

TYPO3 verwendet allgemeine XML x: einschließlich. Hier ist the English example auf GitHub, und sie haben viel mehr dort.

Dies wird wahrscheinlich nicht spielt gut mit dem verwalteten Schema, wie es ein Full-Schema auf dem ersten Lese regenerieren. Alternativ

, wie Binoy schrieb, Bootstrap-Schema aus gemeinsamer Quelle und dann Schema API verwenden, um die Änderungen zu übernehmen.