set extra_float_digits =0; SELECT set_smlar_limit(0.6); set_smlar_limit ----------------- 0.6 (1 row) CREATE TYPE ctext AS (id text, w float4); SELECT t, ARRAY( SELECT (ROW(v::text, v::float4))::ctext FROM generate_series(1, t) as v ) AS v INTO test_composite_text FROM generate_series(1, 200) as t; SELECT t, smlar(v, '{"(10,1)", "(9,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(3,1)", "(2,1)", "(1,1)"}'::ctext[]) AS s FROM test_composite_text WHERE v % '{"(10,1)", "(9,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(3,1)", "(2,1)", "(1,1)"}'::ctext[] ORDER BY s DESC, t; t | s ----+---------- 10 | 1 11 | 0.953463 9 | 0.948683 12 | 0.912871 8 | 0.894427 13 | 0.877058 14 | 0.845154 7 | 0.83666 15 | 0.816497 16 | 0.790569 6 | 0.774597 17 | 0.766965 18 | 0.745356 19 | 0.725476 5 | 0.707107 20 | 0.707107 21 | 0.690066 22 | 0.6742 23 | 0.65938 24 | 0.645497 4 | 0.632456 25 | 0.632456 26 | 0.620174 27 | 0.608581 (24 rows) SELECT t, smlar(v, '{"(50,1)", "(49,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(33,1)", "(2,1)", "(1,1)"}'::ctext[]) AS s FROM test_composite_text WHERE v % '{"(50,1)", "(49,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(33,1)", "(2,1)", "(1,1)"}'::ctext[] ORDER BY s DESC, t; t | s ----+---------- 8 | 0.782624 9 | 0.737865 7 | 0.717137 10 | 0.7 11 | 0.667424 6 | 0.645497 12 | 0.63901 13 | 0.613941 (8 rows) SELECT t, smlar(v, '{"(10,1)", "(9,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(3,1)", "(2,1)", "(1,1)"}'::ctext[]) AS s FROM test_composite_text WHERE smlar(v, '{"(10,1)", "(9,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(3,1)", "(2,1)", "(1,1)"}'::ctext[]) > 0.6 ORDER BY s DESC, t; t | s ----+---------- 10 | 1 11 | 0.953463 9 | 0.948683 12 | 0.912871 8 | 0.894427 13 | 0.877058 14 | 0.845154 7 | 0.83666 15 | 0.816497 16 | 0.790569 6 | 0.774597 17 | 0.766965 18 | 0.745356 19 | 0.725476 5 | 0.707107 20 | 0.707107 21 | 0.690066 22 | 0.6742 23 | 0.65938 24 | 0.645497 4 | 0.632456 25 | 0.632456 26 | 0.620174 27 | 0.608581 (24 rows) SELECT t, smlar(v, '{"(50,1)", "(49,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(33,1)", "(2,1)", "(1,1)"}'::ctext[]) AS s FROM test_composite_text WHERE smlar(v, '{"(50,1)", "(49,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(33,1)", "(2,1)", "(1,1)"}'::ctext[]) > 0.6 ORDER BY s DESC, t; t | s ----+---------- 8 | 0.782624 9 | 0.737865 7 | 0.717137 10 | 0.7 11 | 0.667424 6 | 0.645497 12 | 0.63901 13 | 0.613941 (8 rows) SELECT t, smlar(v, '{"(10,1)", "(9,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(3,1)", "(2,1)", "(1,1)"}'::ctext[], false) AS s FROM test_composite_text WHERE smlar(v, '{"(10,1)", "(9,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(3,1)", "(2,1)", "(1,1)"}'::ctext[], false) > 0.6 ORDER BY s DESC, t; t | s ----+---------- 10 | 0.886405 9 | 0.842927 8 | 0.797053 11 | 0.773192 7 | 0.748331 6 | 0.696143 12 | 0.682191 5 | 0.639602 13 | 0.607744 (9 rows) SELECT t, smlar(v, '{"(50,1)", "(49,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(33,1)", "(2,1)", "(1,1)"}'::ctext[], false) AS s FROM test_composite_text WHERE smlar(v, '{"(50,1)", "(49,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(33,1)", "(2,1)", "(1,1)"}'::ctext[], false) > 0.6 ORDER BY s DESC, t; t | s ---+---------- 8 | 0.730632 7 | 0.668153 9 | 0.618147 (3 rows) SELECT t, smlar(v, '{"(10,1)", "(9,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(3,1)", "(2,1)", "(1,1)"}'::ctext[], true) AS s FROM test_composite_text WHERE smlar(v, '{"(10,1)", "(9,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(3,1)", "(2,1)", "(1,1)"}'::ctext[], true) > 0.6 ORDER BY s DESC, t; t | s -----+---------- 1 | 1 2 | 0.948683 3 | 0.92582 4 | 0.912871 5 | 0.904534 6 | 0.898717 7 | 0.894427 8 | 0.891133 9 | 0.888523 10 | 0.886405 11 | 0.886405 12 | 0.886405 13 | 0.886405 14 | 0.886405 15 | 0.886405 16 | 0.886405 17 | 0.886405 18 | 0.886405 19 | 0.886405 20 | 0.886405 21 | 0.886405 22 | 0.886405 23 | 0.886405 24 | 0.886405 25 | 0.886405 26 | 0.886405 27 | 0.886405 28 | 0.886405 29 | 0.886405 30 | 0.886405 31 | 0.886405 32 | 0.886405 33 | 0.886405 34 | 0.886405 35 | 0.886405 36 | 0.886405 37 | 0.886405 38 | 0.886405 39 | 0.886405 40 | 0.886405 41 | 0.886405 42 | 0.886405 43 | 0.886405 44 | 0.886405 45 | 0.886405 46 | 0.886405 47 | 0.886405 48 | 0.886405 49 | 0.886405 50 | 0.886405 51 | 0.886405 52 | 0.886405 53 | 0.886405 54 | 0.886405 55 | 0.886405 56 | 0.886405 57 | 0.886405 58 | 0.886405 59 | 0.886405 60 | 0.886405 61 | 0.886405 62 | 0.886405 63 | 0.886405 64 | 0.886405 65 | 0.886405 66 | 0.886405 67 | 0.886405 68 | 0.886405 69 | 0.886405 70 | 0.886405 71 | 0.886405 72 | 0.886405 73 | 0.886405 74 | 0.886405 75 | 0.886405 76 | 0.886405 77 | 0.886405 78 | 0.886405 79 | 0.886405 80 | 0.886405 81 | 0.886405 82 | 0.886405 83 | 0.886405 84 | 0.886405 85 | 0.886405 86 | 0.886405 87 | 0.886405 88 | 0.886405 89 | 0.886405 90 | 0.886405 91 | 0.886405 92 | 0.886405 93 | 0.886405 94 | 0.886405 95 | 0.886405 96 | 0.886405 97 | 0.886405 98 | 0.886405 99 | 0.886405 100 | 0.886405 101 | 0.886405 102 | 0.886405 103 | 0.886405 104 | 0.886405 105 | 0.886405 106 | 0.886405 107 | 0.886405 108 | 0.886405 109 | 0.886405 110 | 0.886405 111 | 0.886405 112 | 0.886405 113 | 0.886405 114 | 0.886405 115 | 0.886405 116 | 0.886405 117 | 0.886405 118 | 0.886405 119 | 0.886405 120 | 0.886405 121 | 0.886405 122 | 0.886405 123 | 0.886405 124 | 0.886405 125 | 0.886405 126 | 0.886405 127 | 0.886405 128 | 0.886405 129 | 0.886405 130 | 0.886405 131 | 0.886405 132 | 0.886405 133 | 0.886405 134 | 0.886405 135 | 0.886405 136 | 0.886405 137 | 0.886405 138 | 0.886405 139 | 0.886405 140 | 0.886405 141 | 0.886405 142 | 0.886405 143 | 0.886405 144 | 0.886405 145 | 0.886405 146 | 0.886405 147 | 0.886405 148 | 0.886405 149 | 0.886405 150 | 0.886405 151 | 0.886405 152 | 0.886405 153 | 0.886405 154 | 0.886405 155 | 0.886405 156 | 0.886405 157 | 0.886405 158 | 0.886405 159 | 0.886405 160 | 0.886405 161 | 0.886405 162 | 0.886405 163 | 0.886405 164 | 0.886405 165 | 0.886405 166 | 0.886405 167 | 0.886405 168 | 0.886405 169 | 0.886405 170 | 0.886405 171 | 0.886405 172 | 0.886405 173 | 0.886405 174 | 0.886405 175 | 0.886405 176 | 0.886405 177 | 0.886405 178 | 0.886405 179 | 0.886405 180 | 0.886405 181 | 0.886405 182 | 0.886405 183 | 0.886405 184 | 0.886405 185 | 0.886405 186 | 0.886405 187 | 0.886405 188 | 0.886405 189 | 0.886405 190 | 0.886405 191 | 0.886405 192 | 0.886405 193 | 0.886405 194 | 0.886405 195 | 0.886405 196 | 0.886405 197 | 0.886405 198 | 0.886405 199 | 0.886405 200 | 0.886405 (200 rows) SELECT t, smlar(v, '{"(50,1)", "(49,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(33,1)", "(2,1)", "(1,1)"}'::ctext[], true) AS s FROM test_composite_text WHERE smlar(v, '{"(50,1)", "(49,1)", "(8,1)", "(7,1)", "(6,1)", "(5,1)", "(4,1)", "(33,1)", "(2,1)", "(1,1)"}'::ctext[], true) > 0.6 ORDER BY s DESC, t; t | s -----+---------- 1 | 1 2 | 0.948683 3 | 0.948683 8 | 0.893198 9 | 0.893198 10 | 0.893198 11 | 0.893198 12 | 0.893198 13 | 0.893198 14 | 0.893198 15 | 0.893198 16 | 0.893198 17 | 0.893198 18 | 0.893198 19 | 0.893198 20 | 0.893198 21 | 0.893198 22 | 0.893198 23 | 0.893198 24 | 0.893198 25 | 0.893198 26 | 0.893198 27 | 0.893198 28 | 0.893198 29 | 0.893198 30 | 0.893198 31 | 0.893198 32 | 0.893198 7 | 0.89172 6 | 0.888957 5 | 0.884652 4 | 0.881917 50 | 0.663459 51 | 0.663459 52 | 0.663459 53 | 0.663459 54 | 0.663459 55 | 0.663459 56 | 0.663459 57 | 0.663459 58 | 0.663459 59 | 0.663459 60 | 0.663459 61 | 0.663459 62 | 0.663459 63 | 0.663459 64 | 0.663459 65 | 0.663459 66 | 0.663459 67 | 0.663459 68 | 0.663459 69 | 0.663459 70 | 0.663459 71 | 0.663459 72 | 0.663459 73 | 0.663459 74 | 0.663459 75 | 0.663459 76 | 0.663459 77 | 0.663459 78 | 0.663459 79 | 0.663459 80 | 0.663459 81 | 0.663459 82 | 0.663459 83 | 0.663459 84 | 0.663459 85 | 0.663459 86 | 0.663459 87 | 0.663459 88 | 0.663459 89 | 0.663459 90 | 0.663459 91 | 0.663459 92 | 0.663459 93 | 0.663459 94 | 0.663459 95 | 0.663459 96 | 0.663459 97 | 0.663459 98 | 0.663459 99 | 0.663459 100 | 0.663459 101 | 0.663459 102 | 0.663459 103 | 0.663459 104 | 0.663459 105 | 0.663459 106 | 0.663459 107 | 0.663459 108 | 0.663459 109 | 0.663459 110 | 0.663459 111 | 0.663459 112 | 0.663459 113 | 0.663459 114 | 0.663459 115 | 0.663459 116 | 0.663459 117 | 0.663459 118 | 0.663459 119 | 0.663459 120 | 0.663459 121 | 0.663459 122 | 0.663459 123 | 0.663459 124 | 0.663459 125 | 0.663459 126 | 0.663459 127 | 0.663459 128 | 0.663459 129 | 0.663459 130 | 0.663459 131 | 0.663459 132 | 0.663459 133 | 0.663459 134 | 0.663459 135 | 0.663459 136 | 0.663459 137 | 0.663459 138 | 0.663459 139 | 0.663459 140 | 0.663459 141 | 0.663459 142 | 0.663459 143 | 0.663459 144 | 0.663459 145 | 0.663459 146 | 0.663459 147 | 0.663459 148 | 0.663459 149 | 0.663459 150 | 0.663459 151 | 0.663459 152 | 0.663459 153 | 0.663459 154 | 0.663459 155 | 0.663459 156 | 0.663459 157 | 0.663459 158 | 0.663459 159 | 0.663459 160 | 0.663459 161 | 0.663459 162 | 0.663459 163 | 0.663459 164 | 0.663459 165 | 0.663459 166 | 0.663459 167 | 0.663459 168 | 0.663459 169 | 0.663459 170 | 0.663459 171 | 0.663459 172 | 0.663459 173 | 0.663459 174 | 0.663459 175 | 0.663459 176 | 0.663459 177 | 0.663459 178 | 0.663459 179 | 0.663459 180 | 0.663459 181 | 0.663459 182 | 0.663459 183 | 0.663459 184 | 0.663459 185 | 0.663459 186 | 0.663459 187 | 0.663459 188 | 0.663459 189 | 0.663459 190 | 0.663459 191 | 0.663459 192 | 0.663459 193 | 0.663459 194 | 0.663459 195 | 0.663459 196 | 0.663459 197 | 0.663459 198 | 0.663459 199 | 0.663459 200 | 0.663459 33 | 0.651203 34 | 0.651203 35 | 0.651203 36 | 0.651203 37 | 0.651203 38 | 0.651203 39 | 0.651203 40 | 0.651203 41 | 0.651203 42 | 0.651203 43 | 0.651203 44 | 0.651203 45 | 0.651203 46 | 0.651203 47 | 0.651203 48 | 0.651203 49 | 0.631477 (200 rows)