Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Персонализация контента с помощью Yii, Sphinx и Couchbase

3,186 views

Published on

Коротко о компании Онтико и проектах на Yii, которые были реализованы. Проблема персонализации контента. Хранение большого объёма данных в Couchbase. Поиск связанного контента при помощи PHP(Yii) и Sphinx.

Published in: Technology

Персонализация контента с помощью Yii, Sphinx и Couchbase

  1. 1. Персонализация контента спомощью Yii, Sphinx и Couchbase Артём Демченков (Онтико)
  2. 2. ООО “Онтико”
  3. 3. Что такое “Персонализация контента?”
  4. 4. Youtube.com
  5. 5. Youtube.com
  6. 6. Виды рекомендованного контента- Страницы, связанные с уже просмотреннымистраницами.- Страницы, связанные с контентом текущейстраницы.- Страницы, связанные с вашими интересами.- Страницы, специально подобранные вамредактором сайта.
  7. 7. Связь через тегина примере сайта медицинской тематики
  8. 8. Теги на странице сайта
  9. 9. Исходные данные- PHP (Yii Framework)
  10. 10. Исходные данные- PHP (Yii Framework)- 50 000 статей, 100 000 новостей
  11. 11. Исходные данные- PHP (Yii Framework)- 50 000 статей, 100 000 новостей- 50 000 тегов в MySQL
  12. 12. Исходные данные- PHP (Yii Framework)- 50 000 статей, 100 000 новостей- 50 000 тегов в MySQL- У каждого тега есть родитель, потомки исвязанные теги
  13. 13. Дерево тегов(Каталог медицинских терминов)
  14. 14. Архитектура системы Couchbase MySQLЗапросвиджета NGINX PHP SPHINX Memcache
  15. 15. Упрощенная структура базы данныхmed_news med_news_tags med_tagsid id idtitle news_id titletext tag_id is_publishis_publish
  16. 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...”
  17. 17. Алгоритм подбора поискового запроса1. Теги страницы
  18. 18. Алгоритм подбора поискового запроса1. Теги страницы2. Дочерние теги каждого из тегов страницы
  19. 19. Алгоритм подбора поискового запроса1. Теги страницы2. Дочерние теги каждого из тегов страницы3. Теги, связанных с каждым из тегов страницы
  20. 20. Алгоритм подбора поискового запроса1. Теги страницы2. Дочерние теги каждого из тегов страницы3. Теги, связанных с каждым из тегов страницы4. Родитель каждого из тегов страницы
  21. 21. Дерево тегов(Каталог медицинских терминов)
  22. 22. Алгоритм подбора поискового запроса1. Теги страницы2. Дочерние теги каждого из тегов страницы3. Теги, связанных с каждым из тегов страницы4. Родитель каждого из тегов страницыА если материалов не хватает, то все сначала :-)
  23. 23. MySQL?
  24. 24. Выходим из мейнстрима
  25. 25. 1. Хранит часто используемые данные в оперативной памяти,а редкие на диске.2. Позволяет удобно реплицировать данные на несколькоcерверов.http://www.couchbase.com/
  26. 26. Каждый тег в Couchbase25 = { “n” : 2, “a” : 1, “p” : 156, “d” : “6, 7, 8”, “r” : “35, 56, 33”}
  27. 27. Подбор строки1. Теги страницы2. Дочерние теги каждого из тегов страницы3. Теги, связанных с каждым из тегов страницы4. Родитель каждого из тегов страницы
  28. 28. Связь Couchbase и Yii (1 способ)Библиотека,основанная на протоколе Memcached.Для установки можно положить файлы библиотекив папку /protected/vendorsи подключить в /protected/config/main.phphttps://github.com/couchbaselabs/php-couchbase
  29. 29. Связь Couchbase и Yii (2 способ)PHP Client LibraryБиблиотека написана на С и собирается из исходников.http://www.couchbase.com/develop/php/current
  30. 30. Связь Sphinx и Yii (1 способ)Расширение DgsphinxsearchСпособ установки подробно описан на странице расширения:http://www.yiiframework.com/extension/dgsphinxsearch
  31. 31. Связь Sphinx и Yii (2 способ)Sphinx APIДля установки можно положить файл APIв папку /protected/vendorsи подключить в /protected/config/main.phphttp://code.google.com/p/sphinxsearch/source/browse/trunk/api/sphinxapi.php
  32. 32. И наконец...1. Поисковый запрос в Sphinx2. Результат в Memcache3. И в браузер пользователю
  33. 33. Спасибо за вниманиеАртём Демченков@ : artem.demchenkov@ontico.ru, ardemchenkov@gmail.com : ardemchenkov

×