Похожие записи: какой модуль лучше для русских текстов и наиболее производителен? Relevant content, Similar entries, ...? [+]

Главные вкладки

Аватар пользователя SkyD SkyD 7 марта 2010 в 6:15

Друзья!

Хочу добавить на сайт автоматический вывод похожих материалов после основного текста ноды.

Прошерстил д.орг, отобрал кандидатуры.
Остались два основных вопроса:

  1. Качество работы с русским языком - латиницу модули наверняка обрабатывают нормально, будет ли то же самое с кириллицей?
  2. Производительность - очевидно, что подбор похожих материалов - это сравнение по словарям, либо поиск (не самые быстрые операции)

Вот модули, которые мне удалось найти:

  • Similar Entries - выглядит наиболее подходящим с точки зрения процесса работы. Использует FULLTEXT для таблиц MyISAM;
  • Relevant Content - использует таксономию для подбора похожих записей - выбирает записи с теми же терминами, а также смотрит на дату создания материала;
  • Similar By Terms - очень похож на предыдущий модуль, тоже использует термины таксономии, требует наличия словаря "Tags", работающего в режиме freetagging (ноды, не имеющие терминов из него, выводиться не будут). Умеет кэшировать блоки, что хорошо для скорости работы;
  • Related links - отсутствует версия для D6, так что дальше я изучать не стал.

Для меня наиболее подходящим выглядит Similar Entries (т.к. у меня нет тэгов), но вопрос снова в качестве и скорости его работы.

А используете ли вы похожие или один из этих модулей?
Мне было бы очень интересно услышать ваш отзыв (особенно о Similar Entries).

Комментарии

Аватар пользователя theСанитар theСанитар 7 марта 2010 в 17:12

Строго говоря, вопрос скорости заканчивается на кэшировании. Similar Entries себя кэширует по самое небалуйся (по-моему, даже не привлекая стандлартный API кэширования, а совсем самостоятельно). В итоге, особой нагрузки нет, один запрос -- вынуть блок (ну, там не совсем один, но терпимо). Сам по себе FULLTEXT-индекс тоже работает быстро.

Единственная засада -- при достаточно больших объемах FULLTEX-индекс начинает тормозить операции вставки (у меня это было где-то в районе 170 тыс. документов, каждый -- около 4 Кбайт, на самом деле скорее зависит от настройки буферов в MySQL и специфики данных). Но при меньших объемах Similar Entries -- очень милая вещица.

А, единственный минус: с CCK не работает, теоретически, можно его переписать на Sphinx, если совсем припрет, о чем и подумываю (мне параметрическое сходство нужно).

Аватар пользователя edhel edhel 7 марта 2010 в 21:45

На двух сайтах делал вывод похожих нод по кол-ву одинаковых терминов. Пример: http://tube.sfu-kras.ru/video/631 (похоже видео), http://news.sfu-kras.ru/node/5335 (похожие новости). Сам делал select-ы для подсчета кол-ва терминов, совпадающих с терминами текущей ноды.

Аватар пользователя SkyD SkyD 10 марта 2010 в 16:02

"theСанитар" wrote:
Similar Entries себя кэширует по самое небалуйся (по-моему, даже не привлекая стандлартный API кэширования, а совсем самостоятельно).

Судя по докам, они перешли на стадартный метод кэширования блоков, когда он появился (в Д6), т.е. если кэширование блоков отключено, то и в SE кэширования не будет.
(если я не правь, смело меня поправляйте)

"theСанитар" wrote:
при достаточно больших объемах FULLTEX-индекс начинает тормозить операции вставки (у меня это было где-то в районе 170 тыс. документов, каждый -- около 4 Кбайт

Правильно ли я понимаю, что у вас на сайте было 170 тыс. нод?

И скажите пжл (опыт - это самое интересное): на каком хосте SE начинал тормозить на таком (совсем немаленьком) сайте?

"volocuga" wrote:
Будет оно иметь полюбому свои 300-5оо запросов на страницу...Если это не сайт визитка

Т.е.? Даже если у меня сайт, на котором сейчас 30 нод (и он ну очень навряд ли вырастет больше 700 документов), то что - при выводе любой из нод благодаря SE делается три сотни (!!) запросов??

"volocuga" wrote:
там всё в UTF-8, какая разница какой шрифт

Года полтора назад у аналогичного плагина для WP были проблемы с не-латиницей - его алгоритм в итоге начинал работать, если не ошибаюсь, через побуквенный поиск.
(точно подробностей не помню, но могу поискать)

Аватар пользователя theСанитар theСанитар 11 марта 2010 в 23:29

"SkyD" wrote:
Судя по докам, они перешли на стадартный метод кэширования блоков, когда он появился (в Д6), т.е. если кэширование блоков отключено, то и в SE кэширования не будет.

Может быть. В любом случае, механизмы кэширования есть, и даже стандартный вполне справляется, думаю. Если припрет, то его переделать -- работы на 15 минут.

"SkyD" wrote:
Правильно ли я понимаю, что у вас на сайте было 170 тыс. нод?
И скажите пжл (опыт - это самое интересное): на каком хосте SE начинал тормозить на таком (совсем немаленьком) сайте?

Почему "было"? Есть и увеличивается Wink Но это дедик, довольно мощный (хотя с другой стороны, на нем не один сайт висит).

Тормозить начинал не SE, он-то как раз занимаетися только выборкой, там все пучком. А вот при _вставке_ MySQL с ощутимым усилием прожевывал FULLTEXT-индекс (что понятно и он на это имеет полное право). А SE летал, ему-то что, ему пофиг -- запросил выборку, мускул по индексу быстро и выдал нужное. На то индекс и придуман Wink

"SkyD" wrote:
Т.е.? Даже если у меня сайт, на котором сейчас 30 нод (и он ну очень навряд ли вырастет больше 700 документов), то что - при выводе любой из нод благодаря SE делается три сотни (!!) запросов??

Это, я думаю, товарищ пугает, запросы генерятся не конкретно SE, а вообще Drupal на всю страницу. Но в целом да, Drupal любит наяривать базу. Другое дело, что запросы простые и достаточно быстро отрабатываемые. Но в целом любовь разработчиков к идее "все в БД" необъяснима рациональными причинами. Они когда-то рассказывали, что мол "все быстро ложится в кэш БД и проблем нет", но если речь идет о shared-хостинге, где кэш в момент забьется чужими запросами, это не работает. Но увы, это реальность, данная нам в ощущениях.

(А, и да, что меня в свое время подкупило в SE -- именно то, что там в общем один-два-три запроса. Модули, рисующие "похожие материалы" на базе таксономии насилуют БД значительно больше: запросов больше, джойны всякие...)

"SkyD" wrote:
Года полтора назад у аналогичного плагина для WP были проблемы с не-латиницей - его алгоритм в итоге начинал работать, если не ошибаюсь, через побуквенный поиск.
(точно подробностей не помню, но могу поискать)

В WordPress и не такое могло быть Wink

Аватар пользователя kodo kodo 12 марта 2010 в 7:22

Сам недавно разбирался с подобным вопросом. Но мне было проще, есть тэги и сайт не нагруженный.
Свои изыскания записал - http://dovbysh.com/ru/article/moduli-drupal-pohozhie-materialy
На самом сайте http://dovbysh.com/ используется Relevant content удобно так как используется поле СКК для вывода.