set extra_float_digits =0; SELECT set_smlar_limit(0.3); SET smlar.type = "tfidf"; SET smlar.stattable = "int4_stat"; UPDATE test_int4 SET v = v || '{50,50,50}'::int4[] WHERE t >=50 AND t < 60; INSERT INTO test_int4 VALUES(201, '{50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50}'); CREATE TABLE int4_stat ( value int4 UNIQUE, ndoc int4 NOT NULL CHECK (ndoc>0) ); INSERT INTO int4_stat ( SELECT q.w, count(*) FROM (SELECT array_to_col(v) AS w FROM test_int4 WHERE v IS NOT NULL) AS q GROUP BY w ); INSERT INTO int4_stat VALUES (NULL, (SELECT count(*) FROM test_int4)); DROP INDEX idx_test_int4; SET smlar.tf_method = "n"; SET smlar.idf_plus_one = off; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "n"; SET smlar.idf_plus_one = on; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "log"; SET smlar.idf_plus_one = off; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "log"; SET smlar.idf_plus_one = on; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "const"; SET smlar.idf_plus_one = off; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "const"; SET smlar.idf_plus_one = on; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; CREATE INDEX idx_test_int4 ON test_int4 USING gist (v _int4_sml_ops); SET enable_seqscan = off; SET smlar.tf_method = "n"; SET smlar.idf_plus_one = off; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "n"; SET smlar.idf_plus_one = on; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "log"; SET smlar.idf_plus_one = off; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "log"; SET smlar.idf_plus_one = on; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "const"; SET smlar.idf_plus_one = off; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "const"; SET smlar.idf_plus_one = on; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; DROP INDEX idx_test_int4; CREATE INDEX idx_test_int4 ON test_int4 USING gin (v _int4_sml_ops); SET enable_seqscan = off; SET smlar.tf_method = "n"; SET smlar.idf_plus_one = off; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "n"; SET smlar.idf_plus_one = on; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "log"; SET smlar.idf_plus_one = off; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "log"; SET smlar.idf_plus_one = on; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "const"; SET smlar.idf_plus_one = off; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; SET smlar.tf_method = "const"; SET smlar.idf_plus_one = on; SELECT smlar('{199,199,199,199,1}', '{199,1}'::int4[]); SELECT t, smlar(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4 WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t; SELECT t, smlar(v, '{50,49,8,7,6,5,4,33,2,1}') AS s FROM test_int4 WHERE v % '{50,49,8,7,6,5,4,33,2,1}' ORDER BY s DESC, t; RESET enable_seqscan;