在我們的新網站(購物網站)上,我們將使用Solr作爲我們網站的搜索引擎。在Solr索引中,我們保留了產品ID的列表以及每個產品的關鍵字列表。搜索查詢是針對關鍵字完成的。將Solr結果與MySQL數據結合的最有效方式
Solr返回產品ID列表。然後將這些ID插入到MySQL查詢中,以從數據庫中選擇所有產品數據。 MySQL也處理結果的排序。例如,MySQL查詢可能如下所示:
SELECT * FROM product WHERE id IN (1,4,42,32,46,...,39482) ORDER BY price ASC
我們網站上有大約10萬種產品。當有幾千個結果時,此方法正常工作,但當有 - 例如 - 50,000個結果時,該方法變得很慢。
我的假設是瓶頸是「WHERE IN」子句。一個長期的解決方案是將所有產品數據移動到Solr,以便它可以處理結果的排序,並將精煉過濾器應用於搜索(例如,用戶可能只想查看某個價格範圍內的產品)。但是,我們對Solr並不熟悉,需要短期修復才能實施。
一種選擇是在短期內放棄Solr並將關鍵字存儲在MySQL的表中,然後使用FULL-TEXT搜索對此進行搜索。
我是否缺少其他選擇?
你能創建一個'VIEW'? – Kermit 2013-02-19 14:35:15
不是從select語句創建的VIEW嗎?我不知道如何使用Solr查詢的結果來創建視圖。 Solr返回一個產品ID的數組。 – Andrew 2013-02-19 14:45:21