django_sphinx_db

Yazılım ekran görüntüsü:
django_sphinx_db
Yazılım detaylar:
Versiyon: 0.1-3
Qayıt: 20 Feb 15
Geliştirici: Ben Timby
Lisans: Ücretsiz
Popülerlik: 0

Rating: 3.0/5 (Total Votes: 2)

django_sphinx_db SphinxQL üzerinden Sfenks ile etkileşim sağlayan basit bir Django veritabanı arka uç olduğunu. Temelde Sfenks için bazı değişikliklerle varsayılan Django MySQL arkaplana olduğunu.
SphinxQL Sfenks searchd destekleyen bir MySQL klon modu. Bu normal eski SQL sözdizimi aracılığıyla dizin sorgulamak için izin verir. Eğer rt (gerçek zamanlı) indeksleri kullanıyorsanız, ayrıca ekleyebilir ve endeksindeki güncelleme belgeleri yapabilirsiniz.
Bu arka uç Django settings.py bir veri tabanı olarak configued olması anlamına gelir.
Bu paket, Yönetici sınıf, SQLCompiler paketi sağlar ve kod destekleyen bu mümkün kılmak için.
Kullanım
Her şeyden önce, Django yapılandırmasında bir veritabanı bağlantısı tanımlamanız gerekir. Ayrıca Sfenks veritabanı yönlendirici yüklemek ve INSTALLED_APPS listesine django_sphinx_db eklemeniz gerekir.
# Django_sphinx_db yükleyin:
INSTALLED_APPS + = ('django_sphinx_db')
# Bu VERİTABANLARI içinde sfenks sunucusunun adıdır:
SPHINX_DATABASE_NAME = 'sfenks'
# Sfenks bağlantıyı tanımlayın
VERİTABANLARI = {
& Nbsp; 'varsayılan': {
& Nbsp; # Varsayılan veritabanı bağlantısı buraya ...
& Nbsp;},
& Nbsp; SPHINX_DATABASE_NAME: {
& Nbsp; 'MOTOR': 'django_sphinx_db.backend.sphinx',
& Nbsp; # veritabanı adı önemli değil.
& Nbsp; 'İSMİ': ',
& Nbsp; # kullanıcı adı veya şifre yoktur.
& Nbsp; 'KULLANICI': '',
& Nbsp; 'PASSWORD': ',
& Nbsp; localhost kullanmayın #, bu yerine TCP bir ÜDS neden olacaktır ...
& Nbsp; 'HOST': '127.0.0.1',
& Nbsp; 'PORT': '9306',
& Nbsp;},
}
# ... Ve rota buna göre ...
DATABASE_ROUTERS (=
& Nbsp; 'django_sphinx_db.routers.SphinxRouter'
) `` `
Sonra SphinxModel türemiş bir model tanımlar. Her zamanki gibi, bir model models.py yerleştirilir.
django_sphinx_db.backend.models gelen SphinxModel, SphinxField ithalat
sınıf MyIndex (SphinxModel):
& Nbsp; sınıf Meta:
& Nbsp; Bu gelecek biraz önemlidir #, Django yönetmek istemiyorum
& Nbsp; # Bu model için tablo.
& Nbsp; = false yönetilen
& Nbsp; name = SphinxField ()
& Nbsp; içerik = SphinxField ()
& Nbsp; tarih = models.DateTimeField ()
& Nbsp; boyutu = models.IntegerField ()
Sfenks yapılandırma
Şimdi endeksi için bir yapılandırma dosyası oluşturmak gerekir. Bir yönetim komutu, uygun bir konfigürasyona modeli tanımı dönüştürmek üzere temin edilmektedir.
& Nbsp; Python manage.py syncsphinx >> /etc/sphinx.conf
Ve nbsp vi /etc/sphinx.conf
oluşturulan yapılandırma dosyası ancak, [Sfenks yapılandırma başvuru] karşı yapılandırmasını gözden teşvik edilmektedir iyi bir başlangıç ​​olmalıdır (http://sphinxsearch.com/docs/2.0.2/confgroup-index.html).
Sfenks ile Django ORM kullanma
Artık sorgulamak ve Django ORM kullanarak gerçek zamanlı endeksi yönetebilirsiniz. Sen eklemek ve aşağıdaki yöntemleri kullanarak endeks belgeleri güncelleyebilirsiniz. Aşağıdaki örnek düz metin olarak dosya içeriğini okumak için [fulltext kütüphane] (https://github.com/btimby/fulltext) kullanır.
import os, zaman, tam metin
# Endeksi bir belge ekleyin.
yol = 'resume.doc'
st = os.stat (yol)
MyIndex.objects.create (
& Nbsp; name = yol,
& Nbsp; içerik = fulltext.get (yol, ''),
& Nbsp; boyut = st.st_size,
& Nbsp; tarih = time.strftime ('% Y-% m-% d% H:% M:% S', time.localtime (st.st_mtime)),
)
# Endeksinde bir belge güncelleyin
doc = MyIndex.objects.get (pk = 1)
doc.content = fulltext.get (yol, '')
doc.size = st.st_size
doc.date = time.strftime ('% Y-% m-% d% H:% M:% S', time.localtime (st.st_mtime))
doc.save ()
Sen Django arama operatörünü kullanarak tam metin sorguları gerçekleştirebilirsiniz. Daha fazla bilgi için Django belgeleri okuyun.
MyIndex.objects.filter (content__search = 'Foobar')
Sorgu Sfenks doğrudan geçirilir, böylece Sfenks genişletilmiş sorgu sözdizimi saygı duyulur.
Birim Test
Django için Sfenks arka uç create_test_db ve destroy_test_db aramaları görmezden gelecektir. Sfenks veritabanı yapılandırıldığında Bu çağrılar çalışan testler engelleyen, başarısız olur. Bununla birlikte, bu, herhangi bir yapılandırılmış Sphinx veritabanı test sırasında kullanılacak anlamına gelir. Sürece bu akılda ile testleri yazmak gibi, hiçbir sorun olmaması gerekir. . Eğer test çalışmaları sırasında farklı bir veritabanı bağlantısı sorguları yönlendirmek için test_name veritabanı bağlantısı parametresini kullanabilirsiniz unutmayın

Gereksinimler :

  • Python
  • Django

Yorumlar django_sphinx_db

Yorum Bulunamadı
Yorum eklemek
Görüntülerde açın!