Похожие объявления

Denixxx

Мой дом здесь!
Регистрация
7 Фев 2014
Сообщения
244
Реакции
216
Здравствуйте.
Есть база данных доски объявлений.
Структура таблицы:
Код:
CREATE TABLE `board_announcements` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `catid` int(11) NOT NULL COMMENT 'Категория',
  `region` int(11) NOT NULL COMMENT 'Регион',
  `city` varchar(255) NOT NULL COMMENT 'Город',
  `name` varchar(255) NOT NULL COMMENT 'Заголовок',
  `meta_keys` varchar(255) NOT NULL COMMENT 'Meta ключевые слова',
  `meta_desc` varchar(255) NOT NULL COMMENT 'Meta описание',
  `desc` text COMMENT 'Краткое описание',
  `text` text COMMENT 'Полное описание',
  `mode` varchar(255) DEFAULT NULL COMMENT 'Режим публикации',
  `user` varchar(255) NOT NULL COMMENT 'Чьё объявление',
  `price` varchar(255) DEFAULT NULL COMMENT 'Цена',
  `currency` varchar(255) NOT NULL COMMENT 'Валюта',
  `avail` int(5) NOT NULL COMMENT 'Статус объявления',
  `search` text NOT NULL COMMENT 'Поле для поиска по ключевым словам',
  `sort` int(5) DEFAULT NULL COMMENT 'Порядок сортировки',
  `date` datetime NOT NULL COMMENT 'Время изменения',
  `expired` datetime NOT NULL COMMENT 'Окончание публикации',
  PRIMARY KEY (`id`),
  FULLTEXT KEY `name` (`name`,`desc`,`text`,`price`,`search`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Каким образом ищется в базе похожее объявление? Я имею в виду как вообще это делается? Какой принцип?
 
Категория, ключевые слова, может быть цена общая
 
Самое как по мне часто встречающееся - это когда товары в одной категории и делается полнотекстовый поиск по заголовкам.
 
Все индивидуально, зависит от задачи - предоставить только максимально схожие или предоставить хоть что-то похожее на текущее.
Могу посоветовать создать табличку со следующей структурой - announcement_id, related_id, weight и заполнять ее данными где последнее - число отражающее насколько схожи объявления.
Данное решение использовалось в одном из проектов для определения сериалов, которые смотрят вместе, для уменьшения нагрузки на сервер, был скрипт который раз в сутки запускался и формировал данную таблицу. В вашем случае скрипт может запускаться чаще, но и перебирать нужно не все объявления.
 
Могу посоветовать создать табличку со следующей структурой - announcement_id, related_id, weight и заполнять ее данными где последнее - число отражающее насколько схожи объявления.
Ну вот это уже похоже на какое-то решение.
Только как формировать запрос? Полнотекст по полям полного текста объявления + заголовок + краткое описание + ключевики — может быть долгим. Наверное вес назначать каждому из этих полей? Только кажется MySQL этого не умеет. Или я ошибаюсь?
 
Назад
Сверху