我試圖爲包含產品的網站製作迷你搜索引擎。我已經考慮全文搜索,LIKE子句等,但我仍然想繼續我的方式,因爲數據庫將會非常巨大(數以億計的產品)。複雜的mysql選擇語句
設計是這樣的 - 我有一個表單詞配對單詞ID。我有另一個表,其中包含產品匹配的產品ID的所有字對ID。當用戶搜索例如「2GB存儲卡」時,該腳本解析「2GB」,「存儲器」和「卡」。
然後我用:
SELECT pid
FROM indx_0
WHERE wid = 294 OR wid = 20591 OR wid = 330
我結束了對配套產品的話。
我有一個PHP算法,以決定哪些產品取決於多個事情去頂部。但是當我將380k結果加載到php數組中時,執行時間變得非常慢。很清楚,我不能那樣做。但如果我限制每個單詞1000個結果,執行速度很快 - 但它不包括所有可能的結果。
在「indx_0」表中,每個「pid」(產品ID)對於「wid」(單詞id)是唯一的。顯然,有些產品將會有超過1個匹配。我想檢索那些與「wid」有最多匹配的「pid」。
假設有2000個產品匹配「2GB」和200,000個匹配「卡片」和50,000個匹配的「內存」,但只有20個匹配所有這3個字詞的產品,以及200個匹配這些字詞組合的產品。
是否有可能檢索這20個產品以及部分匹配的200個產品?
哇非常感謝你!只有一件事我需要改變..「WHERE pid in」實際上是「WHERE wid in」。除此之外它就像我想要的那樣工作。 – nick 2012-01-28 07:18:37