Django-sfinksi on kerros, joka toimii aivan kuten Django ORM tekee paitsi se toimii päälle sfinksi koko tekstin hakukoneen.
Huomaa: Sinun täytyy luoda oma sfinksi indeksit ja asentaa sfinksi palvelimella käyttämään tätä app.
Ei ole enää vapauta paketteja. Käytä SVN kassalle uusin runko version, sillä se tulee aina olla vakaa ja nykyinen.
Asenna:
Voit asentaa viimeisin vakaa versio:
sudo easy_install djangosphinx
Voit asentaa uusimman kehitysversion (päivitetty melko usein):
svn checkout http://django-sphinx.googlecode.com/svn/trunk/ Django-sfinksi
cd Django-sfinksi
sudo python setup.py asentaa
Huomautus: Sinun täytyy asentaa sphinxapi.py paketin omalle Python Polku tai käyttää jotakin mukana versioihin. Jos haluat käyttää mukana versiota, sinun on määritettävä seuraavat teidän settings.py tiedostoon:
# Sphinx 0.9.9
SPHINX_API_VERSION = 0x116
# Sphinx 0.9.8
SPHINX_API_VERSION = 0x113
# Sphinx 0.9.7
SPHINX_API_VERSION = 0x107
Käyttö:
Seuraavassa on muutamia esimerkkejä käytöstä:
luokan MyModel (models.Model):
& Nbsp; search = SphinxSearch () # vapaaehtoinen: oletuksena db_table
& Nbsp; # Jos indeksin nimi ei vastaa MyModel._meta.db_table
& Nbsp; # Huomautus: Voit luoda automaattisen määrittelyt ./manage.py käsikirjoituksen
& Nbsp; # jos indeksin nimi vastaa.
& Nbsp; search = SphinxSearch ('index_name')
& Nbsp; # Tai ehkä me haluamme olla enemmän .. erityisiä
& Nbsp; searchdelta = SphinxSearch (
& Nbsp; index = 'index_name delta_name ",
& Nbsp; painot = {
& Nbsp; "name": 100,
& Nbsp; "kuvaus": 10,
& Nbsp; "tageja": 80,
& Nbsp;}
& Nbsp;)
queryset = MyModel.search.query ('query')
results1 = queryset.order_by ('@ paino ","id', 'my_attribute')
results2 = queryset.filter (my_attribute = 5)
tuloksia3 = queryset.filter (my_other_attribute = [5, 3,4])
results4 = queryset.exclude (my_attribute = 5) [0:10]
results5 = queryset.count ()
# Kuin 2,0 voit nyt käyttää määrite saada painoa ja vastaavia väitteitä
sillä tulos results1:
& Nbsp; tulostusjälki, result._sphinx
# Voit myös käyttää samanlainen joukko meta tietojen queryset itse (kun se on viipaloitu tai toteutettu millään tavalla)
print results1._sphinx
Joitakin uusia menetelmiä:
& Nbsp; * count ()
& Nbsp; * extra () (siirtynyt queryset)
& Nbsp; * kaikkien () (ei mitään)
& Nbsp; * select_related () (siirtynyt queryset)
& Nbsp; * group_by (kenttä, pelto, kenttä)
& Nbsp; * set_options (index = '', painoja = {}, painot = [])
Django-sfinksi kerros tukee myös joitakin perusasioita kyselyitä usean indeksit. Voit käyttää tätä sinun on ensin ymmärtää sääntöjä UNION. Sinun indeksit tulee sisältää täsmälleen samoja kenttiä. Nämä kentät on myös content_type valinta jonka pitäisi olla content_type id liittyvät kyseiseen taulukkoon (malli).
Voit sitten tehdä jotain tällaista:
SphinxSearch ('Index1 Indeksi2 index3'). Query ("hei")
Tämä palauttaa listan kaikkien otteluiden, tilasi painosta, kaikista indeksit. Tämä tekee yksi SQL kohden indeksi ottelut sitä, koska Django ORM ei tue SQL UNION.
vaatimukset
- Django
- Python
Kommentteja ei löytynyt