Django-sphinx is een laag die functioneert net als de Django ORM doet behalve het werkt op de top van de Sfinx full-text zoekmachine.
Let op: U moet uw eigen sphinx indexen te creëren en te installeren sfinx op uw server om deze app te gebruiken.
Er zullen niet langer vrij te geven pakketten beschikbaar. Gebruik SVN om de nieuwste versie romp kassa, zoals het altijd stabiel en actueel moet zijn.
Installeren:
Om de laatste stabiele versie te installeren:
sudo easy_install djangosphinx
Om de nieuwste ontwikkeling versie (update vaak) te installeren:
svn checkout http://django-sphinx.googlecode.com/svn/trunk/ django-sphinx
cd django-sphinx
sudo python setup.py installeren
Opmerking: Je moet de sphinxapi.py pakket te installeren in uw Python Path of gebruik een van de meegeleverde versies. Om de opgenomen versie te gebruiken, moet u het volgende in uw settings.py bestand op te geven:
# Sphinx 0.9.9
SPHINX_API_VERSION = 0x116
# Sphinx 0.9.8
SPHINX_API_VERSION = 0x113
# Sphinx 0.9.7
SPHINX_API_VERSION = 0x107
Gebruik:
Het volgende is een aantal voorbeeld gebruik:
klasse MyModel (models.Model):
& Nbsp; zoeken = SphinxSearch () # optioneel: standaard db_table
& Nbsp; # Als uw index naam komt niet overeen MyModel._meta.db_table
& Nbsp; # Opmerking: U kunt alleen het genereren van automatische configuratie van de ./manage.py script
& Nbsp; # als je index naam overeenkomt.
& Nbsp; zoeken = SphinxSearch ('index_name')
& Nbsp; # Of misschien willen we meer .. specifiek te zijn
& Nbsp; searchdelta = SphinxSearch (
& Nbsp; index = 'index_name delta_name',
& Nbsp; gewichten = {
& Nbsp; 'naam': 100,
& Nbsp; 'beschrijving': 10,
& Nbsp; 'tags': 80,
& Nbsp;}
& Nbsp;)
queryset = MyModel.search.query ('vraag')
resultaten1 = queryset.order_by ('@ gewicht', 'id', 'my_attribute')
resultaten2 = queryset.filter (my_attribute = 5)
resultaten3 = queryset.filter (my_other_attribute = [5, 3,4])
resultaten4 = queryset.exclude (my_attribute 5 =) [00:10]
resultaten5 = queryset.count ()
# Vanaf 2.0 kunt u nu toegang tot een attribuut voor de argumenten gewicht en soortgelijke krijgen
voor resultaat in resultaten1:
& Nbsp; afdruk, result._sphinx
# U kunt ook toegang krijgen tot een gelijkaardige set van meta data op de queryset zelf (als het eenmaal is gesneden of uitgevoerd op enigerlei wijze)
afdruk results1._sphinx
Enkele aanvullende methoden:
& Nbsp; * count ()
& Nbsp; * extra () (doorgegeven aan de queryset)
& Nbsp; * alle () (niets)
& Nbsp; * select_related () (doorgegeven aan de queryset)
& Nbsp; * group_by (veld, veld, veld)
& Nbsp; * set_options (index = '', gewichten = {}, gewichten = [])
De django-sphinx layer ondersteunt ook een aantal fundamentele opvragen over meerdere indexen. Om dit te gebruiken moet je eerst naar de regels van een UNION begrijpen. Uw indexen moet precies dezelfde velden bevatten. Deze velden moeten ook een content_type selectie die de content_type id geassocieerd met die tafel (model) zou moeten zijn.
U kunt dan zoiets als dit te doen:
SphinxSearch ('index1 index2 Index 3'). Vraag ('hallo')
Dit zal een lijst van alle wedstrijden, bevolen door het gewicht terug, uit alle indexen. Deze voert een SQL-query per index met wedstrijden in het, zoals Django's ORM niet ondersteunt SQL UNION
Eisen .
- Django
- Python
Reacties niet gevonden