因此,對於一個新項目,我正在爲電子商務網站構建一個系統。我們的想法是從供應商處進口產品,而不是直接將其插入到我們的目錄中,我們會將所有信息存儲在一個臨時區域中。每個供應商都有自己的舞臺(即數據庫中的表格),然後我將多個舞臺區域拼合成一個單獨的實體(目前只有一張桌子,但稍後可能放到Sphinx或Solr中)。然後,我們的採購員將能夠搜索分期產品的相關字段(名稱和說明),並顯示匹配的產品清單,然後選擇將這些產品推入實時目錄。搜索將查詢單個表格(展平區域)。爲什麼應該(或不應該)搜索查詢只返回文檔ID?
我的設計調用只在單個拼合表中存儲可搜索和可過濾的字段 - 例如,名稱,描述,supplier_id,supplier_prod_id等。搜索查詢將僅返回匹配項的ID和類(supplier_id),該類將用於識別產品來自哪個分段區。
另一個高級工程師感覺扁平檢索表應包括其他元字段(這將不被搜索),但是從階段「推」的產品,以住目錄時,都可以使用。他也認爲查詢應該返回所有這些其他信息。
我感到非常強烈,只有在扁平表中具有可搜索字段,並且搜索只返回可用於獲取關於產品的所有其他必要元數據的類/ id對(簡單select * from class_table where id in (1,2,3))。
我的理由之一是,這將使後來更容易將展平的表從數據庫切換到像sphinx或solr這樣的搜索服務器,並且其餘代碼不必僅僅因爲實現搜索已更改。
我在正確的道路上嗎?我如何說服其他工程師爲什麼只保留可搜索字段並僅返回ID是重要的?或者更具體地說,爲什麼一個搜索應用程序只返回對象的ID?
有道理。在我的例子中,即使有些字段放在'搜索表'中,我們仍然必須打開暫存區以在推送前充分收集所有必要的信息。 – safoo 2009-09-29 21:56:15