django-Sphinx ist eine Schicht, die Funktionen ähnlich wie die Django ORM tut, außer es funktioniert auf dem Sphinx Volltext-Suchmaschine.
Bitte beachten Sie: Sie müssen Ihren eigenen sphinx Indizes zu erstellen und zu installieren sphinx auf Ihrem Server, um diese App nutzen.
Es wird nicht mehr loslassen Pakete zur Verfügung stehen. Bitte verwenden Sie SVN, um die neueste Version Stamm Kasse, wie es sollte immer stabil und aktuell sein.
Zu installieren:
So installieren Sie die neueste stabile Version:
sudo easy_install djangosphinx
So installieren Sie die neueste Entwicklungsversion (ziemlich häufig aktualisiert):
svn checkout http://django-sphinx.googlecode.com/svn/trunk/ django-sphinx
cd django-sphinx
sudo python setup.py install
Hinweis: Sie müssen das sphinxapi.py Paket in Ihren Python-Pfad installieren oder verwenden Sie eine der Versionen enthalten. Um die mitgelieferte Version verwenden, müssen Sie folgende Angaben in Ihrer settings.py Datei:
# Sphinx 0.9.9
SPHINX_API_VERSION = 0x116
# Sphinx 0.9.8
SPHINX_API_VERSION = 0x113
# Sphinx 0.9.7
SPHINX_API_VERSION = 0x107
Verbrauch:
Hier finden Sie einige Beispiel Nutzung:
Klasse MyModel (models.Model):
& Nbsp; search = SphinxSearch () # optional: standardmäßig auf db_table
& Nbsp; # Wenn Ihr Indexnamen nicht übereinstimmen MyModel._meta.db_table
& Nbsp; # Hinweis: Sie können nur die automatische Konfiguration von der ./manage.py Skript zu generieren
& Nbsp; #, wenn Ihr Indexnamen übereinstimmt.
& Nbsp; search = SphinxSearch ('indexname')
& Nbsp; # Oder vielleicht zu sein .. spezifischen wollen wir
& Nbsp; searchdelta = SphinxSearch (
& Nbsp; index = "index_name delta_name ',
& Nbsp; Gewichte = {
& Nbsp; "Name": 100,
& Nbsp; 'description': 10,
& Nbsp; "Tags": 80,
& Nbsp;}
& Nbsp;)
queryset = MyModel.search.query ('query')
Ergebnisse1 = queryset.order_by (@ Gewicht ","id "," Beispielattribut ')
WERT 2 = queryset.filter (Beispielattribut = 5)
Ergebnisse3 = queryset.filter (my_other_attribute = [5, 3,4])
results4 = queryset.exclude (Beispielattribut = 5) [0.10]
results5 = queryset.count ()
# Ab 2.0 können Sie nun Zugriff auf ein Attribut, die Gewicht und ähnlichen Argumenten erhalten
für Ergebnis in Ergebnisse1:
& Nbsp; Druckergebnis, result._sphinx
# Sie können auch auf eine ähnliche Reihe von Metadaten auf der queryset selbst (sobald es geschnitten worden oder in irgendeiner Weise ausgeführt)
Druck results1._sphinx
Einige zusätzliche Methoden:
& Nbsp; * count ()
& Nbsp; * extra () (auf die queryset weitergegeben)
& Nbsp; * alle () (nichts)
& Nbsp; * select_related () (auf die queryset weitergegeben)
& Nbsp; * group_by (Feld, Feld, Feld)
& Nbsp; * set_options (Index = '', Gewichte = {}, Gewichte = [])
Die django-sphinx Schicht unterstützt auch einige grundlegende Abfragen über mehrere Indizes. Um dies zu nutzen, müssen Sie zuerst die Regeln einer UNION verstehen. Ihre Indizes müssen genau die gleichen Felder enthalten. Diese Felder müssen auch eine content_type Auswahl, die der content_type ID mit der Tabelle (Modell) in Verbindung gebracht werden sollte.
Anschließend können Sie etwas tun, wie folgt aus:
SphinxSearch ('index1 index2 Index3'). Abfrage ("Hallo")
Dadurch wird eine Liste aller Treffer nach Gewicht bestellt aus allen Indizes zurück. Dies führt eine SQL-Abfrage per Index mit Streichhölzern in sie, als Djangos ORM unterstützt keine SQL UNION
Anforderungen .
- Django
- Python
Kommentare nicht gefunden