وdjango_sphinx_db هو بسيط جانغو الخلفية قاعدة البيانات التي تسمح التفاعل مع أبو الهول عبر SphinxQL. انها اساسا الافتراضي جانغو ماي الحالي مع بعض التغييرات لأبو الهول.
SphinxQL هو وضع استنساخ الخلية التي تدعم أبو الهول searchd. انها تسمح لك للاستعلام فهارس عبر جملة SQL القديم منتظم. إذا كنت تستخدم غ (الوقت الحقيقي) والفهارس، ويمكنك أيضا إضافة وثائق التحديث في المؤشر.
وتهدف هذه الخلفية أن configued كقاعدة بيانات في settings.py جانغو.
توفر هذه الحزمة فئة مدير جناح SQLCompiler ودعم الرمز إلى جعل هذا ممكنا.
استعمال
أولا وقبل كل شيء، يجب تعريف اتصال قاعدة بيانات في تكوين جانغو. يجب عليك أيضا تثبيت جهاز التوجيه قاعدة البيانات أبو الهول وإضافة django_sphinx_db الى قائمة INSTALLED_APPS الخاص بك.
# قم بتثبيت django_sphinx_db:
INSTALLED_APPS + = ('django_sphinx_db'،)
# هذا هو اسم الخادم أبو الهول في قواعد البيانات:
SPHINX_DATABASE_NAME = 'أبو الهول'
# تعريف الاتصال من تمثال أبو الهول
قواعد البيانات = {
على & nbsp؛ 'افتراضي': {
على & nbsp؛ # يذهب اتصال قاعدة البيانات الافتراضية لديك هنا ...
على & nbsp؛}،
على & nbsp؛ SPHINX_DATABASE_NAME: {
على & nbsp؛ "ENGINE ':' django_sphinx_db.backend.sphinx،
على & nbsp؛ # لا يهم اسم قاعدة البيانات.
على & nbsp؛ 'اسم': ''،
على & nbsp؛ # لا يوجد اسم المستخدم أو كلمة المرور.
على & nbsp؛ "USER ':' '،
على & nbsp؛ 'كلمة السر': ''،
على & nbsp؛ # لا تستخدم المضيف المحلي، وهذا سوف يؤدي إلى استخدام UDS بدلا من TCP ...
على & nbsp؛ 'HOST': '127.0.0.1'،
على & nbsp؛ "PORT ':' 9306 '،
على & nbsp؛}،
}
# ... والطريق وفقا لذلك ...
DATABASE_ROUTERS = (
على & nbsp؛ "django_sphinx_db.routers.SphinxRouter،
) `` `
ثم تعريف النموذج الذي يستمد من SphinxModel. كما جرت العادة، سيتم وضع نموذج في models.py.
من django_sphinx_db.backend.models استيراد SphinxModel، SphinxField
الطبقة MyIndex (SphinxModel):
على & nbsp؛ الطبقة ميتا:
على & nbsp؛ # هذا الشيء التالي هو المهم، كنت لا تريد جانغو لإدارة
على & nbsp؛ # الجدول لهذا النموذج.
على & nbsp؛ تمكن = خطأ
على & nbsp؛ اسم = SphinxField ()
على & nbsp؛ المحتوى = SphinxField ()
على & nbsp؛ تاريخ = models.DateTimeField ()
على & nbsp؛ حجم = models.IntegerField ()
تكوين أبو الهول
الآن تحتاج إلى إنشاء ملف التكوين لالفهرس الخاص بك. ويرد قيادة الإدارة لتحويل تعريف النموذج لتكوين مناسب.
على & nbsp؛ الثعبان manage.py syncsphinx >> /etc/sphinx.conf
ونبسب؛ السادس /etc/sphinx.conf
يجب أن يكون ملف التكوين ولدت بداية جيدة ومع ذلك، كنت مدعوة لمراجعة التكوين ضد [مرجع التكوين أبو الهول] (http://sphinxsearch.com/docs/2.0.2/confgroup-index.html).
باستخدام ORM جانغو مع أبو الهول
يمكنك الآن الاستعلام وإدارة مؤشر في الوقت الحقيقي باستخدام جانغو مكتب إدارة السجلات. يمكنك إدراج وتحديث الوثائق في مؤشر باستخدام الطرق التالية. يستخدم المثال التالي [مكتبة النص الكامل] (https://github.com/btimby/fulltext) لقراءة محتويات الملف كما نص عادي.
السراج الاستيراد، الوقت، النص الكامل
# إضافة مستند إلى الفهرس.
مسار = 'resume.doc "
الحادي = os.stat (مسار)
MyIndex.objects.create (
على & nbsp؛ اسم = المسار،
على & nbsp؛ المحتوى = fulltext.get (مسار، '')،
على & nbsp؛ حجم = st.st_size،
على & nbsp؛ تاريخ = time.strftime ('٪ Y-٪ م-٪ د٪ H:٪ M:٪ S'، time.localtime (st.st_mtime))،
)
# تحديث وثيقة في مؤشر
وثيقة = MyIndex.objects.get (PK = 1)
doc.content = fulltext.get (مسار، '')
doc.size = st.st_size
doc.date = time.strftime ('٪ Y-٪ م-٪ د٪ H:٪ M:٪ S'، time.localtime (st.st_mtime))
doc.save ()
يمكنك تنفيذ استعلامات النص الكامل باستخدام مشغل بحث جانغو. قراءة الوثائق جانغو لمزيد من المعلومات.
MyIndex.objects.filter (content__search = 'Foobar')
يتم تمريرها من خلال الاستعلام مباشرة من تمثال أبو الهول، لذلك يحظى باحترام بناء الجملة الاستعلام بمد أبو الهول.
وحدة اختبار
سوف الخلفية أبو الهول لجانغو تجاهل create_test_db وdestroy_test_db المكالمات. ستفشل هذه الدعوات عندما يتم تكوين قاعدة البيانات أبو الهول، يمنعك من اختبارات التشغيل. ومع ذلك، وهذا يعني أن أي قاعدة بيانات أبو الهول تكوين ستستخدم أثناء الاختبار. طالما أن تكتب الاختبارات الخاصة بك مع هذا في الاعتبار، ينبغي أن يكون هناك أي مشكلة. تذكر أنه يمكنك استخدام المعلمة TEST_NAME اتصال قاعدة البيانات لإعادة توجيه الاستفسارات إلى اتصال قاعدة بيانات مختلفة خلال اختباراته
المتطلبات:.
بيثون
جانغو
لم يتم العثور على التعليقات