django_sphinx_db הוא backend מסד נתוני Django פשוט, המאפשר אינטראקציה עם הספינקס באמצעות SphinxQL. זהו בעצם backend Django MySQL ברירת המחדל עם כמה שינויים לספינקס.
SphinxQL הוא מצב שיבוט MySQL שsearchd הספינקס תומך. זה מאפשר לך לבצע שאילתא אינדקסים באמצעות תחביר SQL ישן רגיל. אם אתה משתמש בrt מדדים (בזמן אמת), אתה יכול גם להוסיף ולעדכן מסמכים במדד.
backend זה נועד להיות configued כמאגר מידע בsettings.py Django.
חבילה זו מספקת רמת מנהל, שירותים SQLCompiler ותמיכה בקוד כדי שזה אפשרי.
שימוש
קודם כל, עליך להגדיר חיבור מסד נתונים בתצורת Django. גם עליך להתקין את הנתב מסד נתוני הספינקס ולהוסיף 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; 'NAME': '',
& Nbsp; # אין שם משתמש או סיסמא.
& Nbsp; "משתמש": '',
& Nbsp; 'סיסמא': '',
& Nbsp; # אל תשתמש localhost, זה יגרום לשימוש ב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; Meta כיתה:
& Nbsp; # קצת זה הבא הוא חשוב, אתה לא רוצה לנהל את Django
& Nbsp; # השולחן עבור דגם זה.
& Nbsp; מנוהל = False
& Nbsp; name = SphinxField ()
& Nbsp; תוכן = SphinxField ()
& Nbsp; תאריך = models.DateTimeField ()
& Nbsp; גודל = models.IntegerField ()
קביעת תצורה של הספינקס
עכשיו אתה צריך ליצור קובץ תצורה עבור המדד שלך. פקודת הניהול מסופקת להמיר את הגדרת המודל להגדרת תצורה מתאימה.
& Nbsp; /etc/sphinx.conf syncsphinx manage.py פיתון >>
& Nbsp; vi /etc/sphinx.conf
קובץ ההגדרות שנוצרו צריכה להיות התחלה טובה עם זאת, אתה מתבקש לעיין בתצורה נגד [התייחסות תצורת הספינקס] (http://sphinxsearch.com/docs/2.0.2/confgroup-index.html).
שימוש בORM Django עם הספינקס
עכשיו אתה יכול לבצע שאילתא ולנהל המדד בזמן אמת שלך באמצעות ORM Django. באפשרותך להוסיף ולעדכן את המסמכים במדד באמצעות השיטות הבאות. הדוגמא הבאה משתמשת ב[ ספריית הטקסט מלאה] (https://github.com/btimby/fulltext) לקריאת תוכן קובץ כטקסט רגיל.
os יבוא, זמן, טקסט מלא
# מוסיף מסמך למדד.
נתיב = 'resume.doc'
st = os.stat (נתיב)
MyIndex.objects.create (
& Nbsp; name = דרך,
& Nbsp; תוכן = fulltext.get (נתיב, ''),
& Nbsp; גודל = st.st_size,
& Nbsp; תאריך = time.strftime ('% א-% m-% d% H: M%: S% ", time.localtime (st.st_mtime)),
)
# עדכון מסמך במדד
doc = MyIndex.objects.get (PK = 1)
doc.content = fulltext.get (נתיב, '')
doc.size = st.st_size
doc.date = time.strftime ('% א-% m-% d% H: M%: S% ", time.localtime (st.st_mtime))
doc.save ()
אתה יכול לבצע שאילתות טקסט מלא באמצעות מפעיל חיפוש Django. קראו את תיעוד Django לקבלת מידע נוסף.
MyIndex.objects.filter (content__search = 'foobar')
השאילתה עוברת דרך ישירות לספינקס, כך תחביר השאילתה הוארכה הספינקס הוא מכובד.
בדיקות יחידה
Backend הספינקס לDjango יתעלם שיחות create_test_db וdestroy_test_db. שיחות אלה ייכשלו כאשר מסד נתוני הספינקס מוגדר, מונעות ממך בדיקות ריצה. עם זאת, זה אומר שכל מסד נתונים הספינקס מוגדר ישמשו במהלך בדיקה. כל עוד אתה כותב בדיקות שלך עם זה בחשבון, לא צריך להיות שום בעיה. . זכור כי אתה יכול להשתמש בפרמטר חיבור מסד נתונים TEST_NAME כדי להפנות שאילתות לחיבור מסד נתונים שונים במהלך ריצות מבחן
דרישות :
- > Python
- Django
תגובות לא נמצא