使用mysql和PHP如何實現搜索2個不同的表格數據?
我正在使用MATCH AGAINST子句。
它對單個表格工作正常。就像我想在商店的餐桌上搜索一樣。沒問題。
我想要的是能夠在單個結果頁面中搜索和顯示來自不同表格的結果。
例如,如果i型 「巧克力衣服」
i可以得到4個結果如下:
Shop1結果
ShopItem1導致
ShopItem2導致
SHOP2結果
當然還有mos相關結果應該排在第一位。
我有很多問題。設計明智以及執行明智
1)我應該改變我的設計?我正在考慮創建一個名爲搜索結果的單獨表格,其中包含來自SHOPS和SHOPPRODUCTS表格的數據。但是這意味着我有一些數據重複。
2)我應該保持我目前的設計嗎?如果是這樣,那麼我怎樣才能通過兩個不同表格的相關性對搜索結果進行排序?
我看到rottentomatoes在不同的組織他們的搜索結果。然而,我們更喜歡搜索結果不受不同類型的限制,特別是當我們有分頁時,更難以導航UI。
http://www.rottentomatoes.com/search/full_search.php?search=girl
OR,實際上是最好的出路?
我希望有人可以給我這方面的指導,特別是如果你有在生成搜索結果的經驗,看起來像多個表。
以來受需求,我就會把表結構在這裏
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表的名稱列進行搜索。
但你可以看到它還沒有實現。
雖然搜索商店已經啓動並正在運行。
添加表結構將有助於獲得良好的答案 – 2009-09-26 10:44:22
嗨您是什麼意思?你的意思是我應該有一個名爲search_results的單獨表格,它包含所有現有的數據,並根據單獨的表格進行匹配? – 2009-09-26 11:26:30
依靠Sphinx或Xapian上的全文搜索不是更容易嗎?以給定的時間間隔創建索引,並且只在其中搜索將大大提高搜索速度。 – unexist 2009-09-30 14:26:26