Solr

Les connexions Apache Solr créées dans Dashboard permettent d'indexer, de consulter ou de supprimer des documents stockés et d'accéder à partir de votre code Python Zato à toutes les autres fonctionnalités offertes par Solr lui-même.

Indexation

# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class MyService(Service):

    def handle(self):
        with self.search.solr['My Connection'].conn.client() as client:

            docs = []

            doc1 = {'id':'my-id1', 'title':'my-title1'}
            doc2 = {'id':'my-id2', 'title':'my-title2'}

            docs.append(doc1)
            docs.append(doc2)

            client.add(docs)

Recherche

# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class MyService(Service):

    def handle(self):
        with self.search.solr['My Connection'].conn.client() as client:

            # Fetch all documents
            result = client.search('*:*')

            # Let's find out what we were given
            for item in result.docs:
                self.logger.info(item)

Dans le server.log:

INFO - Finished 'http://idx/s/c/select/?q=%2A&wt=json' (get) with body '' in 0.003 seconds.
INFO - {'_version_': 1491467048238186496, 'id': 'my-id1', 'title': ['my-title1']}
INFO - {'_version_': 1491467048270692352, 'id': 'my-id2', 'title': ['my-title2']}

Suppression

# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class MyService(Service):

    def handle(self):
        with self.search.solr.get('My Connection').conn.client() as client:

            # Delete a document by its ID
            client.delete('my-id1')

Dans le server.log:

INFO - Finished 'http://idx/s/c/update/?commit=true' (post) .. in 0.027 seconds.

Autres caractéristiques

L'objet de connexion est une instance de pysolr.Solr Reportez-vous à sa documentation principale pour savoir comment accéder à d'autres fonctionnalités telles que la mise à jour, les corrections orthographiques, etc.

# -*- coding: utf-8 -*-

# Zato
  from zato.server.service import Service

  class MyService(Service):

      def handle(self):
          with self.search.solr['My Connection'].conn.client() as client:

              # This is a pysolr.Solr instance
              self.logger.info(client)
INFO - <pysolr.Solr object at 0x7f1b585d8050>

Sujets connexes