0
我有一個名爲indx_0的表,其中我使用「wid」(單詞id)將所有「pid」(產品id)連接按照匹配大多數單詞的產品進行分組。現在,由於實際單詞存儲在稱爲「windex」的不同表中,因此表indx_0僅包含與單詞的ID相匹配的產品ID。選擇查詢+連接表
這是我用來獲得結果的當前查詢。
SELECT pid, count(*) WordMatchCount
FROM indx_0
WHERE wid in (294, 20591, 330)
group by pid
order by WordMatchCount desc
limit 1000
說我搜索「DDR內存卡」我不會得到一個包含「DDR3」優先於任何其他關鍵字,因爲它會搜索精確匹配的結果。所以「ddr存儲卡」和「手機存儲卡」將被視爲平等,因爲「ddr3」和「phone」都不等於ddr。
我想要使用join和LIKE(或任何其他更好的方法)使得「ddr」與「ddr3」或「ddr2」的匹配非常接近,以便優先於其他沒有緊密匹配的結果。
這裏是表結構:
CREATE TABLE IF NOT EXISTS `windex` (
`word` varchar(64) NOT NULL,
`wid` int(10) NOT NULL AUTO_INCREMENT
PRIMARY KEY (`wid`),
UNIQUE KEY `word` (`word`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=834922 ;
CREATE TABLE IF NOT EXISTS `indx_0` (
`wid` int(7) NOT NULL,
`pid` int(7) NOT NULL,
UNIQUE KEY `wid` (`wid`,`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
這可能嗎?
謝謝!
請正確結合表結構的表結構 – diEcho 2012-01-28 07:43:47
表的結構增加 – nick 2012-01-28 23:38:26
是否在'indx_o'中沒有主鍵還告訴我哪個是父表,哪個是子表......用'外鍵'表示。 – diEcho 2012-01-29 09:50:38