django_sphinx_db

Skjermbilde programvare:
django_sphinx_db
Prog.varedetaljer:
Versjon: 0.1-3
Last opp dato: 20 Feb 15
Utvikler: Ben Timby
Lisens: Gratis
Popularitet: 0

Rating: 3.0/5 (Total Votes: 2)

django_sphinx_db er en enkel Django database backend som tillater interaksjon med Sphinx via SphinxQL. Det er i utgangspunktet standard Django MySQL backend med noen endringer for Sphinx.
SphinxQL er en MySQL klonemodus som Sphinx searchd støtter. Den lar deg søke indekser via vanlig gamle SQL syntax. Hvis du bruker rt (real-time) indekser, kan du også legge til og oppdatere dokumenter i indeksen.
Denne backend er ment å bli configued som en database i Django settings.py.
Denne pakken inneholder en leder klasse, SQLCompiler suite og støtte kode for å gjøre dette mulig.
Bruk
Først av alt, må du definere en databasetilkobling i Django konfigurasjon. Du må også installere Sphinx database ruteren og legge django_sphinx_db til din INSTALLED_APPS listen.
# Installer django_sphinx_db:
INSTALLED_APPS + = ('django_sphinx_db',)
# Dette er navnet på sfinksen serveren i databaser:
SPHINX_DATABASE_NAME = 'sfinksen'
# Definer tilkoblingen til Sphinx
DATABASENE = {
& Nbsp; «standard»: {
& Nbsp; # Din standard databasetilkobling går her ...
& Nbsp;}
& Nbsp; SPHINX_DATABASE_NAME: {
& Nbsp; 'MOTOR': 'django_sphinx_db.backend.sphinx',
& Nbsp; # Databasenavnet spiller ingen rolle.
& Nbsp; NAME: '',
& Nbsp; # Det er ikke brukernavn eller passord.
& Nbsp; 'BRUKER': '',
& Nbsp; 'PASSWORD': '',
& Nbsp; # Bruk ikke localhost, dette vil resultere i å bruke en UDS stedet for TCP ...
& Nbsp; 'HOST': '127.0.0.1',
& Nbsp; 'PORT': '9306',
& Nbsp;}
}
# ... Og rute tilsvarende ...
DATABASE_ROUTERS = (
& Nbsp; 'django_sphinx_db.routers.SphinxRouter',
) `` `
Deretter definere en modell som stammer fra SphinxModel. Som vanlig, vil modellen plasseres i models.py.
fra django_sphinx_db.backend.models importere SphinxModel, SphinxField
klasse MyIndex (SphinxModel):
& Nbsp; klasse Meta:
& Nbsp; # Dette neste bit er viktig, du ønsker ikke Django å administrere
& Nbsp; # bordet for denne modellen.
& Nbsp; forvaltet = False
& Nbsp; name = SphinxField ()
& Nbsp; content = SphinxField ()
& Nbsp; date = models.DateTimeField ()
& Nbsp; size = models.IntegerField ()
Konfigurering Sphinx
Nå må du generere en konfigurasjonsfil for indeksen. A ledelsen kommando er gitt for å omdanne produktet definisjonen til en egnet konfigurasjon.
& Nbsp; python manage.py syncsphinx >> /etc/sphinx.conf
& Nbsp; vi /etc/sphinx.conf
Den genererte config-filen bør være en god start men blir du oppfordret til å gjennomgå konfigurasjon mot [Sphinx konfigurasjon referanse] (http://sphinxsearch.com/docs/2.0.2/confgroup-index.html).
Bruke Django ORM med Sphinx
Du kan nå søke og administrere din sanntid indeksen med Django ORM. Du kan sette inn og oppdatere dokumenter i indeksen ved hjelp av følgende metoder. Eksempelet nedenfor bruker [fulltekst bibliotek] (https://github.com/btimby/fulltext) for å lese filen innholdet som ren tekst.
import os, tid, fulltekst
# Legg et dokument til indeksen.
path = 'resume.doc'
st = os.stat (bane)
MyIndex.objects.create (
& Nbsp; name = sti,
& Nbsp; content = fulltext.get (bane, ''),
& Nbsp; size = st.st_size,
& Nbsp; date = time.strftime ('% Y-% m-% d% H:% M:% S', time.localtime (st.st_mtime)),
)
# Oppdatere et dokument i indeksen
doc = MyIndex.objects.get (pk = 1)
doc.content = fulltext.get (bane, '')
doc.size = st.st_size
doc.date = time.strftime ('% Y-% m-% d% H:% M:% S', time.localtime (st.st_mtime))
doc.save ()
Du kan utføre fulltekstspørringer ved hjelp av Django søk operatør. Les Django dokumentasjonen for mer informasjon.
MyIndex.objects.filter (content__search = 'Foobar')
Spørringen er gått gjennom direkte til Sphinx, så Sfinksen utvidet spørresyntaks respektert.
Unit Testing
The Sphinx backend for Django vil ignorere create_test_db og destroy_test_db samtaler. Disse samtalene vil mislykkes når Sphinx databasen er konfigurert, hindrer deg fra å kjøre tester. Dette betyr imidlertid at en hvilken som helst valgt Sphinx databasen vil bli brukt under testing. Så lenge du skriver dine tester med dette i tankene, bør det ikke være noe problem. . Husk at du kan bruke TEST_NAME databasetilkobling parameter for å omdirigere spørringer til en annen databasetilkobling ved prøvekjøring

Krav :

  • Python
  • Django

Kommentarer til django_sphinx_db

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!