Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Похожие темы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
assd
Отправлено: 30 Января, 2013 - 12:39:37
Post Id


Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Пытаюсь реализовать функцию похожих тем на сайте. Думаю брать текущий заголовок и сравнивать его с теми, что есть в базе. Если в заголовке есть одинаковые слова то выводим этот заголовок. Но думаю, что при большом количестве статей это будет ресурсозатратно. Брать каждый заголовок и сравнивать с текущим. Как вы думаете? Может можно как-то по другому? Заранее спасибо за ответы.
 
 Top
EuGen Администратор
Отправлено: 30 Января, 2013 - 12:44:53
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Введите тегирование тем - и пусть корректность её будет определяться модераторами, исходя из того, как тема тегирована автором. Тогда задача сведется к простому поиску наличия нужного в тегах темы (а это обычное сравнение на подмножество, основанное на сравнении на равенство)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
assd
Отправлено: 30 Января, 2013 - 14:20:28
Post Id


Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Тоесть, нужно завести еще одну колонку в таблице. Потом туда писать одинаковые теги для похожих статей? Это не будет трудоемко опять же парсить теги всех статей на одинаковость?
 
 Top
EuGen Администратор
Отправлено: 30 Января, 2013 - 14:28:30
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Нет, у Вас будет отдельная таблица тегов и соотношение будет многие ко многим. Таким образом, помимо таблицы тегов будет еще таблица-связка между темами и тегами. Сама же таблица тем не будет изменена вообще.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
assd
Отправлено: 30 Января, 2013 - 14:34:52
Post Id


Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




А что мы в таблице связке держим? какой тег к какому айди относится?
 
 Top
EuGen Администратор
Отправлено: 30 Января, 2013 - 14:43:47
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
assd
Отправлено: 30 Января, 2013 - 15:07:05
Post Id


Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




По типу, к статье_1 с id=1 в таблице статей, я записываю тег "новость" с id=3 в таблице тегов. Потом к статье_2 с id=5 в таблице статей, я записываю тег "новость" с id=2 в таблице тегов. А в таблице связке получиться 1=>3, 5=>2? Как тогда определить что они похожи?
Я понимаю, что несу чушь, но хочу понять эти связи. Вы уж извините)
 
 Top
Fetis
Отправлено: 30 Января, 2013 - 15:15:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 153
Дата рег-ции: Дек. 2012  
Откуда: Киров, Россия


Помог: 0 раз(а)




1 таблица с новостями: id статьи
2 таблица с тегами: id тега
3 таблица-связка: id статьи и id тега (кокраз о том, о чем говорили выше)

(Отредактировано автором: 30 Января, 2013 - 15:18:20)

 
 Top
assd
Отправлено: 30 Января, 2013 - 15:18:21
Post Id


Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Fetis пишет:

1 таблица с новостями:
2 таблица с тегами
3 таблица-связка: id новость и id тега


Это я понял. А как потом понять, что статьи (новости) похожи между собой?
 
 Top
EuGen Администратор
Отправлено: 30 Января, 2013 - 15:21:01
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Нет, не корректно.
Пусть у Вас есть статьи:
CODE (htmlphp):
скопировать код в буфер обмена
  1. id=1, title='Взбесившийся пони покусал половину посетителей зоопарка!'
  2. id=3, title='Ученые доказали гипотезу Римана!'
  3. id=4, title='О вреде курения'
  4. id=7, title='Ведутся работы над поиском нового онкологического препарата'

Соответственно, Вы хотите тегировать их так - первая, очевидно, является юмористической новостью про животных. Теги: юмор, животные, новости. Вторая - научная сенсация. Теги - математика, новости, открытие. Третья - статья про здоровый образ жизни, тегируем как здоровье. Последняя - очевидно, инновационное решение в области здравоохранения. Теги будут новости, открытие, здоровье. Исходя из этого у Вас будет таблица тегов:
CODE (htmlphp):
скопировать код в буфер обмена
  1. id=1,name='юмор'
  2. id=2,name='животные'
  3. id=3,name='новости',
  4. id=4,name='математика'
  5. id=5,name='открытие'
  6. id=6,name='здоровье'

- то есть в таблице содержатся все уникальные теги, которые были собраны при тегировании тем. Получается, что для связи, которая описана выше, достаточно определить таблицу-связку с записями
CODE (htmlphp):
скопировать код в буфер обмена
  1. topic_id=1,tag_id=1
  2. topic_id=1,tag_id=2
  3. topic_id=1,tag_id=3
  4. topic_id=3,tag_id=4
  5. topic_id=3,tag_id=3
  6. topic_id=3,tag_id=5
  7. topic_id=4,tag_id=6
  8. topic_id=7,tag_id=6
  9. topic_id=7,tag_id=5
  10. topic_id=7,tag_id=3


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
assd
Отправлено: 30 Января, 2013 - 15:32:23
Post Id


Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Спасибо за подробный пример, теперь стало более ясно. Я просто думал, что автор статьи сам будет вводить теги, а на самом деле он будет только ставить чекбоксы, к каким тегам относится статья.

А что если, например есть "Статья1. Часть1", "Статья1. Часть2" и так допустим 20 частей статьи. И таких статей с частями масса. Я хочу в первой сказать, что вот есть еще другие части статьи. Тогда нужно будет для каждой такой статьи создавать свой отдельный тег. И тогда это будет не очень удобно. 30-40 тегов выбирать чекбоксами.
 
 Top
EuGen Администратор
Отправлено: 30 Января, 2013 - 15:39:25
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Это, скорее, вопрос интерфейса - ну и, конечно же, логики приложения, которая должна предусматривать возможность разбиения статьи на части.
Я бы предложил такое решение - у таблицы статей ввести поле group_id, в которой указывать некоторый идентификатор. Все статьи, имеющие в этом поле одинаковое значение (по названию понятно, что это будет целочисленное поле, но ничто не мешает делать его полем произвольного типа, так как оно нужно только лишь как индикатор того, к какой статье относятся записи) - являются частями одной статьи. То есть сама "статья" хранится в виде своих частей а поле указывает на то, что записи в таблице являюся частями.

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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
assd
Отправлено: 30 Января, 2013 - 16:09:31
Post Id


Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Спасибо)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB