django_sphinx_db

Screenshot Software:
django_sphinx_db
Detalii soft:
Versiune: 0.1-3
Incarca data: 20 Feb 15
Producător: Ben Timby
Licenţă: Gratuit
Popularitate: 10

Rating: 3.0/5 (Total Votes: 2)

django_sphinx_db este un simplu backend bază de date Django, care permite interacțiunea cu Sfinxul prin SphinxQL. Acesta este, în principiu implicit Django MySQL backend cu unele modificări pentru Sphinx.
SphinxQL este un mod clona MySQL că Sfinxul searchd acceptă. Acesta vă permite să interogare indici prin sintaxa SQL regulat vechi. Dacă utilizați RT (în timp real) indecși, puteți adăuga și documentele de actualizare în index.
Acest backend este menit să fie configued ca o bază de date în settings.py Django.
Acest pachet oferă o clasă Manager, SQLCompiler suită și sprijinirea cod pentru a face acest lucru posibil.
Utilizare
Mai întâi de toate, trebuie să definiți o conexiune bază de date în configurația Django. Trebuie să instalați, de asemenea, router-ul de bază de date Sfinxul si adaugati django_sphinx_db la lista de INSTALLED_APPS.
# Instalare django_sphinx_db:
INSTALLED_APPS + = ('django_sphinx_db',)
# Acesta este numele serverului sfinx în bazele de date:
SPHINX_DATABASE_NAME = 'sfinx'
# Definiți conexiunea la Sphinx
BAZE DE DATE = {
& Nbsp; "default": {
& Nbsp; # conexiune la baza de date implicit merge aici ...
& Nbsp;},
& Nbsp; SPHINX_DATABASE_NAME: {
& Nbsp; "motor": "django_sphinx_db.backend.sphinx",
& Nbsp; # Numele bazei de date nu contează.
& Nbsp; "NAME": "",
& Nbsp; # Nu există nici un nume de utilizator sau parola.
& Nbsp; "utilizator": "",
& Nbsp; "PASSWORD": "",
& Nbsp; # Nu utilizați localhost, acest lucru va duce la ajutorul unui UDS în loc de TCP ...
& Nbsp; "gazdă": "127.0.0.1",
& Nbsp; "port": "9306",
& Nbsp;},
}
# ... Și trecere în consecință ...
DATABASE_ROUTERS = (
& Nbsp; "django_sphinx_db.routers.SphinxRouter",
) `` `
Apoi, definirea unui model care derivă din SphinxModel. Ca de obicei, modelul va fi plasat în models.py.
de la django_sphinx_db.backend.models import SphinxModel, SphinxField
MyIndex clasă (SphinxModel):
& Nbsp; clasă Meta:
& Nbsp; # Acest bit următoare este important, nu vrei Django să gestioneze
& Nbsp; # tabelul pentru acest model.
& Nbsp; gestionat = False
& Nbsp; name = SphinxField ()
& Nbsp; conținut = SphinxField ()
& Nbsp; data = models.DateTimeField ()
& Nbsp; size = models.IntegerField ()
Configurarea Sphinx
Acum, aveți nevoie pentru a genera un fișier de configurare pentru index ta. O comandă de management este prevăzută pentru a converti definiția de model la o configurație adecvat.
& Nbsp; piton manage.py syncsphinx >> /etc/sphinx.conf
& Nbsp; vi /etc/sphinx.conf
Fișierul de configurare generat ar trebui să fie un început bun cu toate acestea, vă sunt îndemnate să revizuiască configurația împotriva [Sfinxul referință configurație] (http://sphinxsearch.com/docs/2.0.2/confgroup-index.html).
Utilizarea Django ORM cu Sfinxul
Puteți interoga acum și de a gestiona indexul timp real, folosind Django ORM. Puteți insera și actualiza documentele indicelui folosind următoarele metode. Exemplul de mai jos foloseste [biblioteca de text] (https://github.com/btimby/fulltext) pentru citirea conținutului fișierului ca text simplu.
os de import, timp, text complet
# Adaugă un document la index.
cale = 'resume.doc'
st = os.stat (cale)
MyIndex.objects.create (
& Nbsp; name = cale,
& Nbsp; conținut = fulltext.get (cale, ''),
& Nbsp; size = st.st_size,
& Nbsp; data = time.strftime ('% Y% m-% d% H:% M:% S ", time.localtime (st.st_mtime)),
)
# Actualizarea un document în index
doc = MyIndex.objects.get (pk = 1)
doc.content = fulltext.get (cale, '')
doc.size = st.st_size
doc.date = time.strftime ('% Y% m-% d% H:% M:% S ", time.localtime (st.st_mtime))
doc.save ()
Puteți efectua interogări full-text folosind operatorul căutare Django. Citiți documentația Django pentru mai multe informații.
MyIndex.objects.filter (content__search = 'Foobar')
Interogarea este trecut prin direct la Sfinx, așa Sfinxul sintaxa interogare extinse este respectat.
unitate de testare
Backend Sfinxul de Django va ignora create_test_db și destroy_test_db apeluri. Aceste cereri vor eșua când baza de date Sphinx este configurat, vă împiedică să testele de funcționare. Cu toate acestea, acest lucru înseamnă că orice bază de date Sphinx configurate vor fi utilizate în timpul încercării. Atâta timp cât scrie testele în acest sens, ar trebui să existe nici o problemă. . Amintiți-vă că puteți folosi parametrul conexiune de date TEST_NAME a redirecționa interogări la o conexiune bază de date diferit în timpul curse de probă

Cerințe :

  • Python
  • Django

Comentarii la django_sphinx_db

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!