django_sphinx_db

Screenshot der Software:
django_sphinx_db
Softwarebeschreibung:
Version: 0.1-3
Upload-Datum: 20 Feb 15
Entwickler: Ben Timby
Lizenz: Frei
Popularität: 0

Rating: 3.0/5 (Total Votes: 2)

django_sphinx_db ist ein einfaches Django Datenbank-Backend, die Interaktion mit Sphinx ermöglicht über SphinxQL. Es ist im Grunde die Standard Django MySQL-Backend mit einigen Änderungen zur Sphinx.
SphinxQL ist eine MySQL-Clone-Modus, die Sphinx searchd unterstützt. Es ermöglicht Ihnen, Indizes über regelmäßige alten SQL-Syntax abfragen. Wenn Sie mit rt (Echtzeit) Indizes werden, können Sie auch hinzufügen und aktualisieren Dokumente im Index.
Dieses Backend ist gedacht als eine Datenbank in der Django settings.py configued werden.
Dieses Paket enthält eine Manager-Klasse, SQLCompiler Suite und unterstützenden Code dies zu ermöglichen.
Verwendung
Zunächst müssen Sie eine Datenbankverbindung in der Django Konfiguration definieren. Sie müssen auch die Sphinx Datenbank-Router zu installieren und fügen django_sphinx_db um Ihre INSTALLED_APPS Liste.
# Installieren django_sphinx_db:
INSTALLED_APPS + = ('django_sphinx_db',)
# Dies ist der Name der Sphinx-Server-Datenbanken:
SPHINX_DATABASE_NAME = "Sphinx"
# Definieren Sie die Verbindung zum Sphinx
DATENBANKEN = {
& Nbsp; "default": {
& Nbsp; # Ihr Standard-Datenbankverbindung geht hier ...
& Nbsp;},
& Nbsp; SPHINX_DATABASE_NAME: {
& Nbsp; 'MOTOR': 'django_sphinx_db.backend.sphinx',
& Nbsp; # Der Name der Datenbank keine Rolle spielt.
& Nbsp; "NAME": '',
& Nbsp; # Es gibt keine Benutzernamen oder Kennwort.
& Nbsp; "USER": '',
& Nbsp; 'Passwort': '',
& Nbsp; # Verwenden Sie nicht localhost, wird dies bei der Verwendung einer UDS anstelle von TCP führen ...
& Nbsp; 'HOST': '127.0.0.1',
& Nbsp; 'PORT': '9306'
& Nbsp;},
}
# ... Und Route entsprechend ...
DATABASE_ROUTERS = (
& Nbsp; "django_sphinx_db.routers.SphinxRouter ',
) `` `
Dann definieren Sie ein Modell, das von der SphinxModel leitet. Wie üblich, wird das Modell in models.py platziert werden.
von django_sphinx_db.backend.models importieren SphinxModel, SphinxField
Klasse MyIndex (SphinxModel):
& Nbsp; Klasse Meta:
& Nbsp; # Diese nächste Bit ist wichtig, Sie nicht wollen, Django zu verwalten
& Nbsp; # die Tabelle für dieses Modell.
& Nbsp; geschafft = False
& Nbsp; name = SphinxField ()
& Nbsp; content = SphinxField ()
& Nbsp; date = models.DateTimeField ()
& Nbsp; size = models.IntegerField ()
Konfigurieren Sphinx
Nun müssen Sie eine Konfigurationsdatei für Ihren Index zu generieren. Ein Verwaltungsbefehl vorgesehen ist, um die Bestimmung des Modells auf eine geeignete Konfiguration umzuwandeln.
& Nbsp; python manage.py syncsphinx >> /etc/sphinx.conf
& Nbsp; vi /etc/sphinx.conf
Die erzeugte Konfigurationsdatei sollte ein guter Anfang, aber Sie aufgefordert werden, um die Konfiguration an die [Sphinx Konfiguration Referenz] überprüft werden (http://sphinxsearch.com/docs/2.0.2/confgroup-index.html).
Mit dem Django ORM mit Sphinx
Jetzt können Sie abfragen und verwalten Sie Ihre Echtzeit-Index mit dem Django ORM. Sie können einfügen und aktualisieren Dokumente im Index mit den folgenden Methoden. Im folgenden Beispiel wird die [Volltext-Bibliothek] (https://github.com/btimby/fulltext) zum Lesen von Dateiinhalte im Klartext.
import os, Zeit, Volltext
# Fügen Sie ein Dokument in den Index.
path = 'RESUME.DOC'
st = os.stat (Pfad)
MyIndex.objects.create (
& Nbsp; name = Pfad,
& Nbsp; content = fulltext.get (path, ''),
& Nbsp; size = st.st_size,
& Nbsp; date = time.strftime ('% Y-% m-% d% H:% M:% S', time.localtime (st.st_mtime)),
)
# Aktualisieren Sie ein Dokument in den Index
doc = MyIndex.objects.get (pk = 1)
doc.content = fulltext.get (path, '')
doc.size = st.st_size
doc.date = time.strftime ('% Y-% m-% d% H:% M:% S', time.localtime (st.st_mtime))
doc.save ()
Sie können Volltextabfragen mit dem Django Suchoperator auszuführen. Lesen Sie die Django-Dokumentation für weitere Informationen.
MyIndex.objects.filter (content__search = 'Foobar')
Die Abfrage erfolgt über direkt an Sphinx übergeben, so dass die Sphinx erweitert Abfragesyntax wird respektiert.
Unit Testing
Die Sphinx-Backend für Django create_test_db und destroy_test_db Anrufe zu ignorieren. Diese Anrufe werden fehlschlagen, wenn die Sphinx-Datenbank konfiguriert ist, verhindern, dass Sie die Ausführung von Tests. Dies bedeutet jedoch, dass jeder konfiguriert Sphinx Datenbank wird während des Tests verwendet werden. Solange Sie Ihre Tests schreiben, in diesem Sinne, sollte es kein Problem sein. . Denken Sie daran, dass Sie die Testname Datenbank-Verbindungsparameter verwenden, um Abfragen an einen anderen Datenbankverbindung bei Testläufen umzuleiten

Anforderungen :

  • Python
  • Django

Kommentare zu django_sphinx_db

Kommentare nicht gefunden
Kommentar hinzufügen
Schalten Sie auf die Bilder!