Django-sfinks er et lag, der fungerer meget ligesom Django ORM gør undtagen det virker oven på Sphinx fuld-tekst søgemaskine.
Bemærk venligst: Du skal oprette dine egne sphinx indekser og installere sphinx på din server for at bruge denne app.
Der vil ikke længere være frigive pakker. Brug venligst SVN til kassen den nyeste trunk-version, da det altid skal være stabil og aktuelle.
Installer:
For at installere den nyeste stabile version:
sudo easy_install djangosphinx
For at installere den seneste udvikling version (opdateret ret ofte):
svn checkout http://django-sphinx.googlecode.com/svn/trunk/ Django-sfinks
cd Django-sfinks
sudo python setup.py installere
Bemærk: Du skal installere sphinxapi.py pakke ind i din Python Sti eller bruge en af de inkluderede versioner. At bruge den medfølgende udgave, skal du angive følgende 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
Anvendelse:
Det følgende er nogle eksempler brug:
klasse MyModel (models.Model):
& Nbsp; search = SphinxSearch () # valgfri: defaults til db_table
& Nbsp; # Hvis dit indeks navn ikke passer MyModel._meta.db_table
& Nbsp; # Bemærk: Du kan kun generere automatiske konfigurationer fra ./manage.py script
& Nbsp; # hvis dit indeks navn matcher.
& Nbsp; search = SphinxSearch ('index_name)
& Nbsp; # Eller måske vi ønsker at være mere .. specifik
& Nbsp; searchdelta = SphinxSearch (
& Nbsp; index = 'index_name delta_name «,
& Nbsp; vægte = {
& Nbsp; 'navn': 100,
& Nbsp; "beskrivelse": 10,
& Nbsp; 'tags': 80,
& Nbsp;}
& Nbsp;)
queryset = MyModel.search.query (query)
results1 = queryset.order_by ('@ vægt', 'id', 'my_attribute')
resultater2 = queryset.filter (my_attribute = 5)
resultater3 = queryset.filter (my_other_attribute = [5, 3,4])
results4 = queryset.exclude (my_attribute 5 =) [0:10]
results5 = queryset.count ()
# Som på 2,0 kan du nu få adgang til en attribut for at få vægt og lignende argumenter
for resultat i results1:
& Nbsp; print resultat, result._sphinx
# Du kan også få adgang til et lignende sæt metadata på queryset selv (når den er blevet skåret eller henrettet på nogen måde)
print results1._sphinx
Nogle yderligere metoder:
& Nbsp; * count ()
& Nbsp; * ekstra () (videregivet til queryset)
& Nbsp; * alle () (gør ingenting)
& Nbsp; * select_related () (videregivet til queryset)
& Nbsp; * group_by (felt, felt, felt)
& Nbsp; * set_options (indeks = '', vægte = {}, vægte = [])
Den Django-sphinx lag understøtter også nogle grundlæggende forespørgsler over flere indekser. For at bruge denne du først nødt til at forstå reglerne for en UNION. Dine indekser skal indeholde nøjagtig de samme områder. Disse felter skal også indeholde en indholdstype udvalg, der skal være den indholdstype id forbundet med tabellen (model).
Du kan så gøre noget som dette:
SphinxSearch ('indeks1 Index2 Index3 «). Query (" hello ")
Dette vil returnere en liste over alle matches, bestilt af vægt, fra alle indekser. Dette udfører en SQL-forespørgsel per indeks med kampe i det, som Django er ORM ikke understøtter SQL UNION
Krav :.
- Django
- Python
Kommentarer ikke fundet