Pré-traiter l'index en Python à l'aide de ScriptUpdateProcessor de Solr

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

Pré-traiter l'index en Python à l'aide de ScriptUpdateProcessor de Solr
Essayez d'utiliser l'API Kraken avec Python
Tweet à l'aide de l'API Twitter en Python
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Essayez d'utiliser l'API DropBox Core avec Python
[AWS IoT] Enregistrer des éléments dans AWS IoT à l'aide du SDK AWS IoT Python
Paramètres initiaux lors de l'utilisation de l'API foursquare avec python
Déterminer le seuil à l'aide de la méthode P-tile en python
Utiliser l'API de recherche de la Bibliothèque du Parlement national en Python
Utilisation de l'application LibreOffice en Python (1) Où sont les macros?
Trouver des erreurs en Python
Mesurez l'indice BMI en Python.
Traduit à l'aide de googletrans en Python
Utilisation du mode Python dans le traitement
Résolvez le problème japonais lors de l'utilisation du module CSV en Python.
Obtenez l'index de chaque élément de la matrice de confusion en Python
Programmation GUI en Python avec Appjar
Obtenir l'API arXiv en Python
Python dans le navigateur: la recommandation de Brython
Enregistrez le fichier binaire en Python
Frappez l'API Sesami en Python
Obtenez le chemin du bureau en Python
Essayez d'utiliser LevelDB avec Python (plyvel)
Obtenez le chemin du script en Python
Utilisation de variables globales dans les fonctions python
Accédez à l'API Web en Python
Voyons voir l'utilisation de l'entrée en python
Puissance totale en Python (en utilisant functools)
Extraire le fichier targz en utilisant python
J'ai écrit la file d'attente en Python
Calculer le mois précédent en Python
Examiner la classe d'un objet avec python
Obtenez le chemin du bureau en Python
Essayez d'utiliser le module Python Cmd
Obtenez le nom d'hôte en Python
Reconnaissance de caractères manuscrits à l'aide de KNN en Python
Accéder à l'API Twitter avec Python
Essayez d'utiliser LeapMotion avec Python
La première étape de Python Matplotlib
Recherche de priorité de profondeur à l'aide de la pile en Python
Lors de l'utilisation d'expressions régulières en Python
J'ai écrit la pile en Python
Maîtriser le module lowref en Python
Création d'interface graphique en python avec tkinter 2
Un débutant en Python a essayé Hello World en 30 secondes en utilisant le microframework Flask
Essayez d'utiliser FireBase Cloud Firestore avec Python pour le moment
Apprenez le modèle de conception "Prototype" avec Python
Apprenez le modèle de conception "Builder" avec Python
Fonctionnement de la souris à l'aide de l'API Windows en Python
Charger le SDK Python distant avec IntelliJ
Notes utilisant cChardet et python3-chardet dans Python 3.3.1.
Création d'interface graphique en python à l'aide de tkinter partie 1
Vérifiez le comportement du destroyer en Python
Pratique d'utilisation de ceci en Python (mauvais)
Apprenez le modèle de conception "Flyweight" en Python
Utilisation de venv dans un environnement Windows + Docker [Python]
Apprenez le modèle de conception "Observer" en Python
Apprenez le modèle de conception "Memento" avec Python
Derrière le flyer: utiliser Docker avec Python