در django_sphinx_db جنگو باطن پایگاه داده ساده است که اجازه می دهد تا تعامل با مجسمه ابوالهول از طریق SphinxQL است. این است که اساسا به طور پیش فرض باطن جنگو خروجی با برخی از تغییرات برای مجسمه ابوالهول.
SphinxQL حالت کلون MySQL را که searchd مجسمه ابوالهول پشتیبانی است. این اجازه می دهد تا شما را به پرس و جو شاخص طریق به طور منظم نحو قدیمی SQL. اگر شما با استفاده از RT (زمان واقعی) شاخص، شما همچنین می توانید اضافه کنید و اسناد به روز رسانی در شاخص.
این باطن به معنای به عنوان یک پایگاه داده در settings.py جنگو configued شود.
این بسته فراهم می کند یک کلاس مدیریت، مجموعه SQLCompiler و حمایت از کد را به این امکان پذیر است.
استفاده
اول از همه، شما باید یک اتصال به پایگاه داده در پیکربندی جنگو را تعریف کنیم. شما همچنین باید در پایگاه داده روتر مجسمه ابوالهول نصب و اضافه کردن django_sphinx_db به لیست INSTALLED_APPS خود را.
# نصب django_sphinx_db:
INSTALLED_APPS + = ('django_sphinx_db'،)
# این نام از سرور مجسمه ابوالهول در پایگاه داده است:
SPHINX_DATABASE_NAME = 'مجسمه ابوالهول "
# تعریف اتصال به مجسمه ابوالهول
پایگاه داده = {
'به طور پیش فرض'؛ از & nbsp: {
و nbsp؛ # اتصال به پایگاه داده به طور پیش فرض شما در اینجا می رود ...
و nbsp؛}،
را لمس کنید و. SPHINX_DATABASE_NAME: {
& nbsp؛ در 'موتور': 'django_sphinx_db.backend.sphinx،
و nbsp؛ # نام پایگاه داده مهم نیست.
& nbsp؛ از "NAME": ''،
و nbsp؛ # هیچ نام کاربری و یا رمز عبور وجود دارد.
& nbsp؛ در 'کاربر': ''،
و nbsp؛ "رمز ورود": ''،
و nbsp؛ # آیا localhost را استفاده نمی کند، این در استفاده از UDS به جای TCP منجر ...
و nbsp؛ میزبان: "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 ()
را لمس کنید و محتوای = SphinxField ()
را لمس کنید و. تاریخ = models.DateTimeField ()
& nbsp؛ در اندازه = models.IntegerField ()
پیکربندی مجسمه ابوالهول
حالا شما نیاز به ایجاد یک فایل پیکربندی برای شاخص خود را. دستور مدیریت ارائه شده است برای تبدیل تعریف مدل به پیکربندی مناسب.
را لمس کنید و. syncsphinx manage.py پایتون >> /etc/sphinx.conf
& nbsp؛ در ششم /etc/sphinx.conf
فایل پیکربندی تولید باید شروع خوبی با این حال، شما می خواست به بررسی پیکربندی علیه [مجسمه ابوالهول پیکربندی مرجع] است (http://sphinxsearch.com/docs/2.0.2/confgroup-index.html).
با استفاده از ORM جنگو با مجسمه ابوالهول
شما هم اکنون می توانید پرس و جو و مدیریت شاخص زمان واقعی خود را با استفاده از جنگو 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-٪ M-٪ D٪ 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-٪ M-٪ D٪ H:٪ M:٪ S'، time.localtime (st.st_mtime))
doc.save ()
شما می توانید نمایش داده شد متن کامل استفاده از عملگر جستجو جنگو انجام دهد. خواندن اسناد جنگو برای اطلاعات بیشتر.
MyIndex.objects.filter (content__search = 'Foobar')
پرس و جو از طریق مستقیم تصویب به مجسمه ابوالهول، بنابراین نحو پرس و جو گسترش مجسمه ابوالهول است مورد احترام است.
تست واحد
باطن مجسمه ابوالهول برای جنگو خواهد create_test_db و destroy_test_db تماس را نادیده گرفت. این تماس های تلفنی خواهد زمانی که پایگاه داده مجسمه ابوالهول پیکربندی شده است شکست، مانع از آزمون در حال اجرا شما. با این حال، این بدان معنی است که هر پایگاه داده مجسمه ابوالهول پیکربندی خواهد شد در طول آزمایش استفاده می شود. تا زمانی که شما ارسال تست خود را با این در ذهن، هیچ مشکلی وجود داشته باشد. به یاد داشته باشید که شما می توانید پارامتر TEST_NAME اتصال به پایگاه داده به تغییر مسیر نمایش داده شد به اتصال به پایگاه داده های مختلف در طول آزمون اجرا می شود استفاده از
مورد نیاز:.
پایتون
جنگو
نظر یافت نشد