2011-11-01 36 views
7

Tôi muốn thực hiện tìm kiếm trong kho lưu trữ nội dung bằng cách sử dụng một hoặc nhiều giá trị làm tham số đầu vào cho thuộc tính đa giá trị Giống như: tìm tất cả các nút có loại chính 'nt: unstructured' property 'multiprop' (thuộc tính đa giá trị) chứa cả hai giá trị "một" và "hai".JCR SQL2 Tìm kiếm thuộc tính đa giá trị

queryString được chuyển đến queryManager.createQuery sẽ như thế nào?

Cảm ơn bạn.

Trả lời

13

Bạn có thể xem các tiêu chí về các thuộc tính đa giá trị giống như các tiêu chí khác. Ví dụ, truy vấn sau đây sẽ tìm thấy tất cả các nút có giá trị của 'con chó trắng' tài sản của người someProp ':

SELECT * FROM [nt:unstructured] WHERE someProp = 'white dog' 

Nếu tài sản 'someProp' có nhiều giá trị, sau đó một nút có ít nhất một giá trị thỏa mãn các tiêu chí sẽ được đưa vào kết quả.

Để tìm các nút có nhiều giá trị của thuộc tính nhiều giá trị, chỉ cần VÀ cùng nhau nhiều tiêu chí. Ví dụ, truy vấn sau đây sẽ trả lại tất cả các nút có cả các giá trị quy định:

SELECT * FROM [nt:unstructured] WHERE someProp = 'white dog' 
            AND someProp = 'black dog' 

Bất kỳ của các nhà khai thác sẽ làm việc, bao gồm cả 'LIKE':

SELECT * FROM [nt:unstructured] WHERE someProp LIKE '%white%' 
            AND someProp LIKE '%black%' 

kết hợp khác có thể xảy ra, trong khóa học.

+1

Cảm ơn bạn. Câu hỏi, xin vui lòng: đó là hai giải pháp là nhiều hơn performant? Hoặc họ nên được hiệu suất giống hệt khôn ngoan? – silverb77

+0

Bây giờ, trước khi nhận được câu trả lời tôi đã thử một cái gì đó giống như someProp LIKE '% black%' và nó có vẻ khá chậm ... Đây có phải là vì tôi đã sử dụng LIKE thay vì =? – silverb77

+0

Câu hỏi cuối cùng xin vui lòng: suy nghĩ về hiệu suất, bạn sẽ thay vì làm một tìm kiếm "bằng tay" bằng cách sử dụng getNode và kiểm tra các giá trị của mỗi propery đối với tham số đầu vào hoặc bạn sẽ làm JCR SQL2 SELECT? Cảm ơn nhiều. – silverb77

Các vấn đề liên quan