3
我有一個約3百萬行的表。每行表示一個包含5個屬性的對象。每一個屬性值是浮子和在範圍從0到1快速最近鄰居搜索
表聲明爲
CREATE TABLE tbl (
OBJECT_ID integer,
property_1 float,
property_2 float,
property_3 float,
property_4 float,
property_5 float
);
我必須找到指定一個第一10個最相似的對象。
我的查詢是:
select T2.OBJECT_ID,
sqrt(
(T1.property_1 - T2.property_1)^2 +
(T1.property_2 - T2.property_2)^2 +
(T1.property_3 - T2.property_3)^2 +
(T1.property_4 - T2.property_4)^2 +
(T1.property_5 - T2.property_5)^2
) similarity
from tbl T1, tbl T2
where T1.OBJECT_ID = 42
order by 2
limit 10;
我怎樣才能提高搜索最相似的物體的表現呢?
接受任何解決方案(oracle,postgres,noSQL或C++)。
查看PostgreSQL的KNN搜索。見例如http://www.sai.msu.su/~megera/postgres/talks/pgcon-2010-1.pdf。我真的需要樣本數據來產生一個實際的答案。 –