django-sfinx är ett skikt som fungerar ungefär som Django ORM gör förutom att det fungerar på toppen av Sphinx fulltexts sökmotor.
Observera: Du måste skapa dina egna sphinx index och installera sfinx på din server för att använda denna applikation.
Det kommer inte längre att släppa paket som finns tillgängliga. Använd Subversion för att kassan den senaste stammen versionen, som det alltid borde vara stabil och aktuell.
Installera:
Så här installerar du den senaste stabila versionen:
sudo easy_install djangosphinx
Så här installerar du den senaste utvecklingsversionen (uppdateras ganska ofta):
svn kassan http://django-sphinx.googlecode.com/svn/trunk/ django-sphinx
cd django-sphinx
sudo python setup.py installera
Obs: Du måste installera sphinxapi.py paketet i din Python Path eller använd någon av de medföljande versioner. Om du vill använda den medföljande versionen, måste du ange följande i din settings.py fil:
# Sphinx 0.9.9
SPHINX_API_VERSION = 0x116
# Sphinx 0.9.8
SPHINX_API_VERSION = 0x113
# Sphinx 0.9.7
SPHINX_API_VERSION = 0x107
Användning:
Följande är några exempel användning:
klass MyModel (models.Model):
& Nbsp; search = SphinxSearch () # tillval: som standard db_table
& Nbsp; # Om indexnamn inte stämmer MyModel._meta.db_table
& Nbsp; # Obs: Du kan bara generera automatiska konfigurationer från ./manage.py skript
& Nbsp; # om indexet namn matcher.
& Nbsp; search = SphinxSearch (index_name)
& Nbsp; # Eller kanske vi vill vara mer .. specifik
& Nbsp; searchdelta = SphinxSearch (
& Nbsp; index = "index_name delta_name",
& Nbsp; vikter = {
& Nbsp; "namn": 100,
& Nbsp; "beskrivning": 10,
& Nbsp; "taggar": 80,
& Nbsp;}
& Nbsp;)
queryset = MyModel.search.query (fråga)
results1 = queryset.order_by (@ vikt ","id "," my_attribute)
resultat2 = queryset.filter (my_attribute = 5)
results3 = queryset.filter (my_other_attribute = [5, 3,4])
results4 = queryset.exclude (my_attribute = 5) [00:10]
results5 = queryset.count ()
# Som 2,0 du kan nu komma åt ett attribut för att få vikt och liknande argument
för resultatet i results1:
& Nbsp; tryckresultat, result._sphinx
# Kan du också få tillgång till en liknande uppsättning metadata om queryset själv (när den har klippt eller avrättas på något sätt)
trycket results1._sphinx
Några ytterligare metoder:
& Nbsp; * count ()
& Nbsp; * extra () (skickas till queryset)
& Nbsp; * alla () (gör ingenting)
& Nbsp; * select_related () (skickas till queryset)
& Nbsp; * group_by (fält, fält, fält)
& Nbsp; * set_options (index = '', vikter = {}, vikter = [])
Den django-sfinx skiktet stödjer också vissa grundläggande fråge över flera index. För att kunna använda detta måste du först förstå reglerna i en fackförening. Dina index måste innehålla exakt samma områden. Dessa fält måste också innehålla en content_type val som bör vara content_type id samband med tabellen (modell).
Du kan sedan göra något så här:
SphinxSearch (index1 index2 index3 "). Query (" hej ")
Detta kommer att returnera en lista över alla matcher, sorterade efter vikt, från alla index. Detta utför en SQL-fråga per index med tändstickor i det, som Django s ORM inte stöder SQL UNIONEN
Krav .
- django
- Python
Kommentarer hittades inte