可以說我有分配給他們的標籤的項目,如「藍色」,「大」,「靈活」。比方說,我也有一個所有可能的標籤字典。創建標籤的可表示簽名
現在的問題是:如何將所有標籤壓縮到單個小號簽名,讓我們說一個浮點數。要求是具有相似標籤的項目具有類似的簽名。
所有的標籤是永遠知道的。簽名應該相對較小,例如一個浮點數或一組整數。
可以說我有分配給他們的標籤的項目,如「藍色」,「大」,「靈活」。比方說,我也有一個所有可能的標籤字典。創建標籤的可表示簽名
現在的問題是:如何將所有標籤壓縮到單個小號簽名,讓我們說一個浮點數。要求是具有相似標籤的項目具有類似的簽名。
所有的標籤是永遠知道的。簽名應該相對較小,例如一個浮點數或一組整數。
坦率地說,我認爲把這個降到一個數字的方案是不值得的。只需使用16位int或32位int來表示標記。併爲每個要應用於項目的標籤使用這些字段中的一個。您節省空間的追求只會增加不必要的複雜性。
爲每個標籤分配一個ID號。您可能希望將標記的映射存儲到單獨的表中。調用標籤總數N和給定項目可以有的標籤數量M.標籤簽名將作爲M數字base-N編號的ID。
因此,如果N = 50K和M = 3
標籤1 = 49999 標籤2 = 1 標籤3 = 2
標記簽名= 49999 + 1 * 50000^1 + 2 * 50000^2 = 5,000,099,999
您將需要超過64位來表示這一點。使用足夠大的整數類型來表示該值。必要時使用多個整數。不要使用浮標,你會失去精度。
還有其他假設嗎?每件商品數量有限?一組標籤是永久固定的?項目和標籤存儲在SQL數據庫中? – 2012-08-16 11:04:16
剛剛更新了要求。 – jQguru 2012-08-16 11:12:14