Персонализация контента с помощью Yii, Sphinx и Couchbase
May. 21, 2012•0 likes•1,733 views
Download to read offline
Report
Technology
Коротко о компании Онтико и проектах на Yii, которые были реализованы. Проблема персонализации контента. Хранение большого объёма данных в Couchbase. Поиск связанного контента при помощи PHP(Yii) и Sphinx.
6. Виды рекомендованного контента
- Страницы, связанные с уже просмотренными
страницами.
- Страницы, связанные с контентом текущей
страницы.
- Страницы, связанные с вашими интересами.
- Страницы, специально подобранные вам
редактором сайта.
11. Исходные данные
- PHP (Yii Framework)
- 50 000 статей, 100 000 новостей
- 50 000 тегов в MySQL
12. Исходные данные
- PHP (Yii Framework)
- 50 000 статей, 100 000 новостей
- 50 000 тегов в MySQL
- У каждого тега есть родитель, потомки и
связанные теги
14. Архитектура системы
Couchbase MySQL
Запрос
виджета
NGINX PHP SPHINX
Memcache
15. Упрощенная структура базы данных
med_news med_news_tags med_tags
id id id
title news_id title
text tag_id is_publish
is_publish
16. Sphinx
Для индексации используем запрос:
sql_query = SELECT n.id as id,
GROUP_CONCAT(CONCAT('searchtag',t.tag_id)) as news_index
FROM med_news n
LEFT JOIN med_news_tags t
ON t.news_id=n.id
WHERE n.is_publish=1
GROUP BY n.id
При поиске передаем Sphinx'у строку вида:
“searchtag1 searchtag2 searchtag3 searchtag4...”
20. Алгоритм подбора поискового
запроса
1. Теги страницы
2. Дочерние теги каждого из тегов страницы
3. Теги, связанных с каждым из тегов страницы
21. Алгоритм подбора поискового
запроса
1. Теги страницы
2. Дочерние теги каждого из тегов страницы
3. Теги, связанных с каждым из тегов страницы
4. Родитель каждого из тегов страницы
28. Алгоритм подбора поискового
запроса
1. Теги страницы
2. Дочерние теги каждого из тегов страницы
3. Теги, связанных с каждым из тегов страницы
4. Родитель каждого из тегов страницы
А если материалов не хватает, то все сначала :-)
31. 1. Хранит часто используемые данные в оперативной памяти,
а редкие на диске.
2. Позволяет удобно реплицировать данные на несколько
cерверов.
http://www.couchbase.com/
33. Подбор строки
1. Теги страницы
2. Дочерние теги каждого из тегов страницы
3. Теги, связанных с каждым из тегов страницы
4. Родитель каждого из тегов страницы
34. Связь Couchbase и Yii (1 способ)
Библиотека,основанная на протоколе Memcached.
Для установки можно положить файлы библиотеки
в папку /protected/vendors
и подключить в /protected/config/main.php
https://github.com/couchbaselabs/php-couchbase
35. Связь Couchbase и Yii (2 способ)
PHP Client Library
Библиотека написана на С и собирается из исходников.
http://www.couchbase.com/develop/php/current
36. Связь Sphinx и Yii (1 способ)
Расширение Dgsphinxsearch
Способ установки подробно описан на странице расширения:
http://www.yiiframework.com/extension/dgsphinxsearch
37. Связь Sphinx и Yii (2 способ)
Sphinx API
Для установки можно положить файл API
в папку /protected/vendors
и подключить в /protected/config/main.php
http://code.google.com/p/sphinxsearch/source/browse/trunk/
api/sphinxapi.php