Использование mysql и PHPКак реализовать поиск двух разных табличных данных?
Я уже использую предложения MATCH AGAINST.
Он отлично работает с отдельными столами. Например, если я хочу искать в таблице магазинов. Нет проблем.
Я хочу, чтобы иметь возможность искать и отображать результаты из разных таблиц на одной странице результатов.
Например, если я типа "Шоколадная одежда"
я может получить 4 результаты следующим образом:
Shop1 результат
ShopItem1 результат
ShopItem2 результат
Shop2 результат
и, конечно же, mos t соответствующие результаты должны быть ранжированы первыми.
У меня есть несколько вопросов. дизайн мудрый, а также реализация мудрый
1) должен ли я изменить свой дизайн? я думаю о наличии отдельной таблицы, называемой результатами поиска, которая будет содержать данные из обеих таблиц SHOPS и SHOPPRODUCTS. однако это означает, что у меня есть дублирование данных.
2) Должен ли я сохранить свой текущий дизайн? если да, то как я могу получить результаты поиска, отсортированные по релевантности в двух разных таблицах?
Я увидел, что rottentomatoes упорядочивал результаты поиска в разных группах. однако мы предпочитаем, чтобы результаты поиска не ограничивались разными типами, особенно когда у нас есть пейджинг, который будет еще труднее ориентироваться в пользовательском интерфейсе.
http://www.rottentomatoes.com/search/full_search.php?search=girl
ИЛИ, что на самом деле лучший выход?
Я надеюсь, что кто-то может дать мне руководство по этому виду esp, если у вас есть опыт в генерации результатов поиска через то, что может показаться несколькими таблицами.
, так как по требованию, я помещу структуры таблицы здесь
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.
, но, как вы можете видеть, оно еще не реализовано.
хотя поиск в магазинах уже запущен.
Добавление структур таблицы поможет получить хороший ответ –
привет, что вы подразумеваете под этим?вы имеете в виду, что у меня должна быть отдельная таблица с именем search_results, которая содержит все существующие данные и сопоставляет их только на основе этой таблицы? –
Не было бы легче полагаться на полнотекстовый поиск на Sphinx или Xapian? Создание индекса с заданным интервалом и только поиск в нем значительно улучшат скорость поиска. – unexist