Referenz: http://www.rondhuit.com/scriptupdateprocessor.html
Der Artikel handelt vom Fall von Javascript, Hier werde ich vorstellen, wie Felder mit jython bei Python registriert werden. Die Umgebung ist übrigens CentOS7 und ich verwende Solr6 und Manifold CF2.4.
** 1. Fügen Sie updateRequestProcessorChain zu .solrconfig.xml hinzu **
solrconfig.xml
...
<updateRequestProcessorChain name="script">
<processor class="solr.StatelessScriptUpdateProcessorFactory">
<str name="script">update-script.py</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
...
Es scheint, dass sich solrconfig.xml an der folgenden Stelle nach solr5 befindet.
var/solr/data/
<corename>
/conf/solrconfig.xml
** 2. Geben Sie die oben in requestHandler definierte UpdateChain an **
solrconfig.xml
...
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="update.chain">script</str>
</lst>
</requestHandler>
...
Wenn Sie PDF oder Excel mit ManifoldCF crawlen möchten, können Sie ExtractingRequestHandler verwenden. Wenn Sie RDB crawlen möchten, müssen Sie DataImportHanlder jede der obigen Beschreibungen hinzufügen.
** 3. Platzieren Sie das Python-Skript in update-script.py **
Platzierung:
var/solr/data/
<corename>
/conf/update-script.py
So registrieren Sie ein Feld in Python
doc.setField("field_name","field_value")
Schreiben. Der vom Skript zu registrierende Feldname muss vorab zu "manage_schema.xml" hinzugefügt werden.
Wenn es eine Registrierung mit demselben Namen gibt, wird sie auf der traurigen Seite zugeordnet.
Übrigens der Index, der bereits eingeführt wurde
doc.getFieldValue("field_name")
Sie können es bei bekommen.
Das Skript wird bei jeder Ausführung ausgewertet, sodass Solr zum Bearbeiten nicht neu gestartet werden muss.
** 4. Jython installieren ** Verwenden Sie jython, um Python auf JavaVM auszuführen. Holen Sie sich über den Link unten
http://www.jython.org/downloads.html
Es scheint, dass Sie die Standalone-Version anstelle der Installer-Version benötigen. Legen Sie es so auf die Solr-Seite.
var/solr/data/
<corename>
/lib/jython-standalone-2.X.X.jar
** 5. Beim Verknüpfen mit DB ** Ich musste die Daten von postgresDB abrufen, daher benötige ich einen JDBC, um von Python aus auf die Datenbank zuzugreifen.
Holen Sie sich den JDBC, der den JDK- und Postegres-Versionen entspricht, von https://jdbc.postgresql.org/download.html
Platziert in var / sorr / data /
<corename>
/lib/postgresql-9.X-XXXX.jar </ code>
Beschreibung Beispiel für Importanweisung und Verbindung
update.script
from com.ziclix.python.sql import zxJDBC
DB_URL = "jdbc:postgresql://yourpostgreshost:port/dbname"
DB_USER = "postgres"
DB_PASS = "password"
DB_DRIVER = "org.postgresql.Driver"
connection = zxJDBC.connect(DB_URL, DB_USER, DB_PASS, DB_DRIVER)
Platziere es so.
** 6. Beim Verweisen auf eine externe Bibliothek **
Wenn Sie eine externe Bibliothek importieren möchten, entpacken Sie die eigenständige jython-Version von jar und Externe Bibliothek Es ist in Ordnung, wenn Sie es an einem geeigneten Ort (normalerweise / Lib) ablegen und es wieder zu einem Glas machen. Es kann einen besseren Weg geben. .. ..
Das ist es. Führen Sie den Job mit Manifoldcf aus, um zu sehen. Wenn das Python-Skript nicht richtig funktioniert, ist es etwas ärgerlich, aber Sie müssen möglicherweise versuchen, Fehler zu machen, während Sie das Fehlerprotokoll anzeigen.
Recommended Posts