Использование mysql и PHP
Я уже использую предложения MATCH AGAINST.
Он отлично работает с отдельными таблицами. Нравится, если я хочу искать в таблице магазинов. Без проблем.
Я хочу иметь возможность искать и отображать результаты из разных таблиц на одной странице результатов.
Например, если я наберу "шоколадная одежда"
я могу получить 4 результата следующим образом:
Магазин1 результат
ShopItem1 результат
ShopItem2 результат
Магазин2 результат
и, конечно же, наиболее релевантные результаты должны быть ранжированы первыми.
у меня довольно много вопросов. как с точки зрения дизайна, так и с точки зрения реализации
1) я должен изменить свой дизайн? Я думаю о том, чтобы иметь отдельную таблицу под названием результаты поиска, которая будет содержать данные как из таблицы SHOPS, так и из таблицы SHOPPRODUCTS. однако это означает, что у меня есть дублирование данных.
2) должен ли я сохранить свой текущий дизайн? если да, то как я могу получить результаты поиска, отсортированные по релевантности в двух разных таблицах?
я видел, что гнилые помидоры организовали свои результаты поиска в разных группах. однако мы предпочитаем, чтобы результаты поиска не ограничивались различными типами, особенно когда у нас есть пейджинг, который будет еще более сложным для навигации по пользовательскому интерфейсу.
http://www.rottentomatoes.com/search/full_search.php?search=girl
ИЛИ это на самом деле лучший выход?
Я надеюсь, что кто-то может дать мне рекомендации по этому поводу, особенно если у вас есть опыт создания результатов поиска в том, что может показаться несколькими таблицами.
так как по требованию я помещу здесь структуры таблиц
CREATE TABLE `shopitems` (
`id` int(10) unsigned NOT NULL auto_increment,
`ShopID` int(10) unsigned NOT NULL,
`ImageID` int(10) unsigned NOT NULL,
`name` varchar(100) NOT NULL,
`description` varchar(255) NOT NULL,
`pricing` varchar(45) NOT NULL,
`datetime_created` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
/*Table structure for table `shops` */
DROP TABLE IF EXISTS `shops`;
CREATE TABLE `shops` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(100) default NULL,
`description` text,
`keywords` text,
`url` varchar(255) default '',
`owner_id` varchar(255) default NULL,
`datetime_created` datetime default NULL,
`created_by` varchar(255) default NULL,
`datetime_modified` datetime default NULL,
`modified_by` varchar(255) default NULL,
`overall_rating_avg` decimal(4,2) default '0.00',
PRIMARY KEY (`id`),
FULLTEXT KEY `url` (`url`),
FULLTEXT KEY `TitleDescFullText` (`keywords`,`title`,`description`,`url`)
) ENGINE=MyISAM AUTO_INCREMENT=3051 DEFAULT CHARSET=utf8;
я намерен выполнить поиск в столбцах описания и имени таблицы shopproducts.
но, как вы можете видеть, это еще не реализовано.
хотя поиск магазинов уже запущен и работает.

