Мод похожих тем!

Автор Алексей С., 27 июня 2007, 20:06:43

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Алексей С.

Есть ли какой-нибудь мод для отображения похожих тем в той теме в которой пользователь сейчас находиться?
Тоесть пользователь смотрит (или пишет ответ) в одной теме, а ему ниже выводиться список похожих тем на ту в которой он пишет.


Заранее благодарен!

digger®

#1
Цитата: Алексей С. от 27 июня 2007, 20:06:43
Есть ли какой-нибудь мод для отображения похожих тем в той теме в которой пользователь сейчас находиться?
Тоесть пользователь смотрит (или пишет ответ) в одной теме, а ему ниже выводиться список похожих тем на ту в которой он пишет.
И по какому принципу похожесть должна определяться?

Алексей С.

Ну возможно по поиску?
Тоесть название данной темы будет вводиться в поиск и будут высвечиваться похожие темы

Jerry

Я бы тоже хотел сделать похожие темы. Но в MySQL есть только оператор LIKE. А есть операторы нахождения вхождений подстрок, разделенных пробелом?
В php можно делить строки на слова с explode,
потом вычислить схождания массивов: array_intersect и подсчитать количество сходных слов.

А как бы в MySQL сделать то же самое? Можно было бы искать в теме или самом сообщении сходные слова, а потом записывать куда-нибудь для индексации. При каждом создании темы ищутся похожие. И чтобы это не тормозило еще при 10к тем. Такое реально?

Как это сделано на vBulletin?

Jerry

#4
Можно сделать всё просто.
Вот список похожих тем:
$request = db_query("
SELECT t.ID_TOPIC, m.subject
FROM {$db_prefix}messages AS m, {$db_prefix}topics AS t
WHERE MATCH (m.subject,m.body) AGAINST
('{$message['body']}')
AND m.ID_MSG = t.ID_FIRST_MSG
LIMIT 4", __FILE__, __LINE__);
Если нужно уменьшить нагрузку, то можно не искать каждый раз, а 1 раз при создании темы записать ID похожих тем в новый столбец (например, id_similars).

Только вот проблема - нужен полнотекстовый индекс! Размер БД как возрастет ведь!
Есть решения лучше?

Я щас себе сделал список похожих тем. Размер БД больше всего в 1.3 раза. Пока всё хорошо...

digger®

Цитата: Sikes от 16 июля 2008, 22:55:26
Если нужно уменьшить нагрузку, то можно не искать каждый раз, а 1 раз при создании темы записать ID похожих тем в новый столбец (например, id_similars).
Тогда темы созданные позже, уже не попадут к ней в похожие.

Lysyj

#6
сделать автоматическое обновление таблицы например через неделю ну в общем чтобы таблица сама обновлялась в установленное время. например замутить такую штуку через chron

и при удалении темы удалять ее из списка в таблице. а если только 2 темы одинаковых топри удалении одной из тем удалять сразу 2 таблицы.

есть в смф такая функция как Поисковое индексирование. туда добавить поле similar и там уже прописывать ID одинаковых тем. Одинаковые темы чтобы вычислялись по ранее написаной. например на форуме только 10 тем.ID от 1-10 если 11 тема похожа на 2 то ей присваивается id=2 в поле similar.

Может я что не так пишу  так уже придумали, то извините.

Но чтобы работал мод, надо принудительно запускать функцию Поисковая индексация

sway

есть ведь мод тегов, на базе него и сделать похожие темы

Jerry

#8
ЦитироватьТогда темы созданные позже, уже не попадут к ней в похожие.
Нет, проверку всех похожих тем можно выполнять при создании темы (переиндексируется всё).

Цитироватьесть ведь мод тегов, на базе него и сделать похожие темы
Зачем? Как мод тегов сделает похожие темы?
Лучше всего делать через MATCH, который учитывает вес слова на основе повторяемости, и еще много факторов. Да и делать самому что-то изначально преднозначенное для заданной цели -  в любом случае, чем ковырять готовые вещи, косвенным методом меняя их назначение и делая не чистый и медленный код.

Я сделал с помощью MATCH и вывел в виде списка 5 самых похожих тем внизу страницы темы в порядке уменьшения релевантности.
Всё работает и не тормозит (по времени генерации страницы), конечно пришлось добавить полнотекстовый индекс в базу, но на размер это не сильно повлияло. :)

Цитироватьсделать автоматическое обновление таблицы например через неделю ну в общем чтобы таблица сама обновлялась в установленное время. например замутить такую штуку через chron

и при удалении темы удалять ее из списка в таблице. а если только 2 темы одинаковых топри удалении одной из тем удалять сразу 2 таблицы.

есть в смф такая функция как Поисковое индексирование. туда добавить поле similar и там уже прописывать ID одинаковых тем. Одинаковые темы чтобы вычислялись по ранее написаной. например на форуме только 10 тем.ID от 1-10 если 11 тема похожа на 2 то ей присваивается id=2 в поле similar.
А как оказалось, проверка каждый раз замедляет всё не сильнее (почти), чем предложенный вариант с записью и загрузкой.
А даже если и записывать, то указанная функция не нужна, т.к. match и так учитывает вес слова на основе повторяемости и сортирует в порядке релевантности.
С полнотекстовым индексом всё очень быстро, размер таблицы постов увеличивается совсем немного (20-30%).


Jerry

Ничесе. :o
Оказывается такое было уже в готовом виде. ;D
Ну ладно уже.

crazyASD

Поставил - все сделал по инструкции, а им даже и не пахнет.....
Не могу понять, мистика какая-то!
Сон разума порождает монстров
Wordpress - рулит!  SMF 2.0.11

Inter

Я вчера немного мод переписал - вроде работает  :)
I'm the law and you can't beat the law

|censored| 'em and their law

Crack down at sundown

crazyASD

Хороший мод, работает как часы.
Сон разума порождает монстров
Wordpress - рулит!  SMF 2.0.11

Dr_Zhalnin

А есть ли он для 1.1.10??
SsangYong Club Украина http://ssangyong-club.org<br />SsangYong club Ukrainian

Bugo

В списке поддерживаемых версий только эти: 1.1.6, 1.1.7, 1.1.8, 1.1.9, 2.0 Beta 4, 2.0 RC1, 2.0 RC1-1, если судить по страничке мода. Но вручную наверняка можно доработать.

Dr_Zhalnin

Цитата: Bugo от 28 ноября 2009, 19:50:00
В списке поддерживаемых версий только эти: 1.1.6, 1.1.7, 1.1.8, 1.1.9, 2.0 Beta 4, 2.0 RC1, 2.0 RC1-1, если судить по страничке мода. Но вручную наверняка можно доработать.
Скорее всего в ручную ставить придется Все
SsangYong Club Украина http://ssangyong-club.org<br />SsangYong club Ukrainian

Drakonsa

Цитата: Dr_Zhalnin от 28 ноября 2009, 19:23:29
А есть ли он для 1.1.10??
Есть FAQ по модам... там есть пару интересных строк :)

supmener

#18
Уважаемый Буго, а почему у меня в вашей версии при установке часть надписей без сообщения "успешно"?

Mavn

а вы обратите внимание на действие производимое модом!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Bugo

Цитата: supmener от 12 февраля 2010, 12:20:53
Уважаемый Буго, а почему у меня в вашей версии при установке часть надписей без сообщения "успешно"?
Напишите создателям движка с просьбой о добавлении надписи «Успешно» при извлечении файлов и изменении базы данных.

Vveb.ws

Прошу не ругаться на меня, но вы тут все не правы!
НЕ НУЖНО, чтобы мод сам индексировал страницы и находил страницы с наибольшим содержанием похожих слов! это абсурд, если у вас нету ХОРОШЕГО поисковика.
Такие слова, как echo, include, php есть практически на всех страницах!

Надо, чтобы админ мог выбрать эти темы из списка (по id) и внести в БД.

Или сделать специальный BB-код: ссылки на поиск тем с ключ. словами.
Но тогда при создании темы надо вводить ключ. слова. Чтобы мод не индексил предлоги и бессмысленные слова.

digger®

Цитата: __vveb.ws от 13 февраля 2010, 20:04:55
Прошу не ругаться на меня, но вы тут все не правы!
НЕ НУЖНО, чтобы мод сам индексировал страницы и находил страницы с наибольшим содержанием похожих слов! это абсурд, если у вас нету ХОРОШЕГО поисковика.
А кто сказал что мод индексирует страницы?

Цитировать
Такие слова, как echo, include, php есть практически на всех страницах!
У кого форум не по программированию, таких слов вообще нет ни на одной странице.

Vveb.ws

ЦитироватьА кто сказал что мод индексирует страницы?
а вот это я не понял, значит... а как тогда? вроде тут был разговор про индексацию.
топикастер
1) создаёт список keywords
или
2) сам подбирает похожие темы?

там на англ форуме 25 страниц текста, я всё не читал и не переводил... лень

ЦитироватьУ кого форум не по программированию, таких слов вообще нет ни на одной странице.
значит, будут какие-то другие частые слова, которые надо будет исключить из индексации (у каждого форума свои, но  в любом случае их будет много).

Bugo

Посмотрите на скриншот и, может быть, поймете принцип, по которому этот мод отбирает похожие темы:


Vveb.ws

А сказать нельзя было? knuppel но, всё равно, спасибо.
Мод подбирает похожие темы по словам из названия темы.

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


0daliska

Цитата: ____vveb.ws от 14 февраля 2010, 01:27:16
А сказать нельзя было? knuppel но, всё равно, спасибо.
Мод подбирает похожие темы по словам из названия темы.

А админ или автор темы могут добавить другие темы в список похожих? или только автоматически?
Если не могут, то тогда мне такой мод не нужен.
Я так понимаю, это именно то, что Вы хотите
http://custom.simplemachines.org/mods/index.php?mod=579
Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only

Vveb.ws

Odaliska, это мысль !!
Конечно, лучше написать тэги, чем искать по ничего не значащим, но частым словам (подскажите, помогите, как, где).

Я раньше делал сайты на Народе, с меню на двух ифреймах (верхнем и нижнем). На сайте, допустим, 5-6 разделов, и в каждом разделе сайта по 5-20 страниц. Щас уже такие сайты я не делаю, но способ мышления остался тот же :) Хочется разделить сайт на разделы (подфорумы), а разделы на подразделы. Но это, я понимаю, несовершенный подход.

Я думаю, этот мод будет удобен, если 1) очень много тем или 2) тема может относиться к нескольким разделам.
Я так понял, если ввести тэг, и юзер щёлкнет на него, то это сопоставимо с поиском по этому слову среди тэгов.

Vveb.ws

Odaliska, спасибо!
установил себе я этот мод.
вначале он не хотел работать, но потом я исправил кодировку в БД в одной из таблиц на cp1251 и всё заработало.

THEKILLERS

да блин, не работает у меня этот мод(

Bugo

Цитата: THEKILLERS от 17 июля 2010, 13:23:34
да блин, не работает у меня этот мод(
Спасибо, всем очень помогла эта информация...

THEKILLERS

я поставил этот мод. Создал 3 темы с похожими названиями, зашел в одну из низ, но снизу не показываются похожие темы. Помогите плиз..
Стоит smf 2.0 RC3

Bugo

После установки мода его надо включить, установить максимальное количество подбираемых похожих тем, задать игнорируемые разделы, в которых похожие темы выводиться не будут и пересобрать индекс, в котором будет храниться вся эта информация — всё это осуществляется на страничке настроек мода.

basken

Цитата: Dr_Zhalnin от 28 ноября 2009, 19:23:29
А есть ли он для 1.1.10??

Утановил на 1.1.11  - работает, вероятно что и на 1.1.10 будет работать