Référence: http://www.rondhuit.com/scriptupdateprocessor.html
L'article porte sur le cas du javascript, Ici, je vais vous présenter comment enregistrer des champs avec Python en utilisant jython. À propos, l'environnement est CentOS7 et j'utilise la version Solr6 et Manifold CF2.4.
** 1. Ajoutez updateRequestProcessorChain à .solrconfig.xml **
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>
...
Il semble que solrconfig.xml se trouve à l'emplacement suivant après solr5.
var/solr/data/
<corename>
/conf/solrconfig.xml
** 2. Spécifiez la UpdateChain définie ci-dessus dans requestHandler **
solrconfig.xml
...
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="update.chain">script</str>
</lst>
</requestHandler>
...
Si vous souhaitez analyser un PDF ou Excel avec ManifoldCF, vous pouvez utiliser ExtractingRequestHandler. Si vous souhaitez analyser RDB, vous devez ajouter chacune des descriptions ci-dessus à DataImportHanlder.
** 3. Placez le script python dans update-script.py **
Placement:
var/solr/data/
<corename>
/conf/update-script.py
Pour enregistrer un champ en Python
doc.setField("field_name","field_value")
Écrire. Le nom de champ à enregistrer par le script doit être ajouté au préalable à "managed_schema.xml".
S'il y a un enregistrement avec le même nom, il sera mappé du côté sorr.
À propos, l'index qui a déjà été introduit
doc.getFieldValue("field_name")
Vous pouvez l'obtenir à.
Le script est évalué à chaque fois qu'il est exécuté, il n'est donc pas nécessaire de redémarrer Solr pour l'édition.
** 4. Installez Jython ** Utilisez jython pour exécuter python sur JavaVM. Obtenez à partir du lien ci-dessous
http://www.jython.org/downloads.html
Il semble que vous ayez besoin de la version autonome au lieu de la version du programme d'installation. Placez-le sur le côté Solr comme ceci.
var/solr/data/
<corename>
/lib/jython-standalone-2.X.X.jar
** 5. Lors de la liaison avec DB ** J'avais besoin d'obtenir les données de postgresDB, j'ai donc besoin d'un JDBC pour accéder à la base de données à partir de python.
Obtenez le JDBC qui correspond aux versions JDK et postegres depuis https://jdbc.postgresql.org/download.html
Placé dans var / sorr / data /
<corename>
/lib/postgresql-9.X-XXXX.jar </ code>
Exemple de description d'instruction d'importation et de connexion
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)
Placez-le comme ça.
** 6. Lors du référencement d'une bibliothèque externe **
Si vous souhaitez importer une bibliothèque externe, décompressez la version autonome jython du fichier jar et Bibliothèque externe C'est OK si vous la placez dans un endroit approprié (généralement / Lib) et en faites à nouveau un pot. Il y a peut-être un meilleur moyen. .. ..
C'est tout. Exécutez le travail dans Manifoldcf pour voir. Si le script Python ne fonctionne pas correctement, c'est un peu ennuyeux, mais vous devrez peut-être essayer de faire une erreur en regardant le journal des erreurs.
Recommended Posts