Đây là những gì tôi hiện đang sử dụng:
CREATE FUNCTION array_intersect(a1 anyarray, a2 anyarray)
RETURNS anyarray AS
$$
SELECT ARRAY(
SELECT unnest($1)
INTERSECT SELECT unnest($2)
ORDER BY 1
);
$$ LANGUAGE sql
IMMUTABLE STRICT;
--get the length:
select array_length ( array_intersect(array[...], array[...]), 1);
Có cách nào nhanh hơn không?
Cảm ơn Craig. Lý tưởng nhất là tôi đang cố gắng để có được sự tương đồng của Jaccard giữa hai mảng. Bất kỳ lời khuyên nào về việc mở rộng phần mềm smlar của Teodor để biên dịch trên Windows?
—
Neil McGuigan
Tôi đang vật lộn với vấn đề tương tự bây giờ. Tôi đã xem xét chuyển đổi các thành phần văn bản của tôi thành số nguyên để sử dụng các phần mở rộng lập chỉ mục số nguyên. Bạn đã bao giờ tìm thấy một cách để làm điều này một cách nhanh chóng?
—
Greg
Kiểu dữ liệu bạn đang sử dụng là gì? Làm thế nào lớn là các mảng?
—
Evan Carroll
intarray
phần mở rộng cung cấp&
toán tử, nhưng dường như không có một tổng quát nào cho tất cả các mảng mặc dù sự tồn tại của&&
phép thử boolean cho các mảng chồng lấp. Thật tuyệt khi thêm, nhưng ... tốt, hãy xem mã nguồn C cho các hàm và toán tử mảng mục đích chung PostgreQuery để xem tại sao không có nhiều như bạn mong đợi. API mảng là khủng khiếp.