django_sphinx_db є простою серверної бази даних Django, яка дозволяє взаємодія зі Сфінксом за допомогою SphinxQL. Це в основному замовчуванням Django MySQL бекенда з деякими змінами для Сфінкса.
SphinxQL є режим клон MySQL, який підтримує Сфінкс SearchD. Це дозволяє запитувати індекси за допомогою регулярного старого синтаксису SQL. Якщо ви використовуєте RT (реального часу) індекси, ви можете також додавати і оновлювати документи в індексі.
Це базова призначений для 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; 'ім'я': '',
І 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; клас Meta:
І NBSP; # Це наступний біт важливо, ви не хочете, Django, щоб керувати
І NBSP; # стіл для цієї моделі.
І NBSP; вдалося = False
І NBSP; ім'я = SphinxField ()
І NBSP; зміст = SphinxField ()
І NBSP; дата = models.DateTimeField ()
І NBSP; розмір = models.IntegerField ()
Налаштування Сфінкса
Тепер ви повинні створити файл конфігурації для індексу. Команда управління забезпечується для перетворення визначення моделі до відповідної конфігурації.
І NBSP; пітон manage.py syncsphinx >> /etc/sphinx.conf
І NBSP; VI /etc/sphinx.conf
Згенерований файл конфігурації повинен бути хороший старт, однак, ви настійно пропонувалося розглянути конфігурацію проти [посилання конфігурації Sphinx] (http://sphinxsearch.com/docs/2.0.2/confgroup-index.html).
Використання Django ORM зі Сфінксом
Тепер ви можете звертатися і управляти індекс в режимі реального часу за допомогою Django ORM. Ви можете вставляти та оновлювати документи в індексі, використовуючи такі методи. Приклад нижче використовує [повнотекстового бібліотеку] (https://github.com/btimby/fulltext) для читання вмісту файлу у вигляді звичайного тексту.
імпорт OS, час, Повний текст
# Додати документ в індекс.
Шлях = 'resume.doc "
ST = 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)),
)
# Оновлення документа в індексі
Doc = MyIndex.objects.get (рк = 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 ()
Ви можете виконувати повнотекстові запити, використовуючи оператор пошуку Django. Читайте документацію Django для отримання додаткової інформації.
MyIndex.objects.filter (content__search = 'Foobar')
Запит проходить через безпосередньо Сфінкса, так розширеного синтаксису запитів Sphinx поважають.
Модульне тестування
Сфінкс серверну частину для Django ігноруватиме create_test_db і destroy_test_db дзвінки. Ці виклики невдачу, коли база даних Сфінкс налаштований, заважає вам ходових випробувань. Тим не менш, це означає, що будь-яка зміна бази даних Сфінкс буде використовуватися під час тестування. До тих пір, як ви пишете тести з урахуванням цього, не повинно бути ніяких проблем. . Пам'ятайте, що ви можете використовувати параметр підключення до бази даних імя_проверкі перенаправити запити на інший підключення до бази даних під час пробного запуску
Вимоги
- Python
- Django
Коментар не знайдено