Khi có thiết lập sau trên Solr 6.6.2:Solr 6.6.2 Truy vấn được nhóm
Bộ sưu tập đám mây Solr có tài liệu có ID trường, ContactId, Thuộc tính và chạy và khóa duy nhất trên id.
Có thể có nhiều tài liệu với cùng một ContactId.
Mỗi tài liệu liên hệ có thuộc tính trường văn bản chứa dòng văn bản. Trường thuộc tính được lập chỉ mục có phân tách bằng ',' để ví dụ: Thuộc tính: Lượt truy cập xanh lục.
Ví dụ:
+----+-----------+--------------+
| ID | ContactId | Properties |
+----+-----------+--------------+
| 1 | C1 | Blue,Green |
| 2 | C1 | Blue,Yellow |
| 3 | C2 | Green,Yellow |
+----+-----------+--------------+
Bây giờ tôi cần phải tìm tất cả ContactIds nơi Thuộc tính đã "xanh" VÀ "vàng", nơi nó được cho phép truy vấn này phù hợp với tất cả các tài liệu trên của ContactID này. Vì vậy, kết quả sẽ là trong trường hợp đó C1, C2.
Tôi đã cố gắng nhóm các kết quả nhưng tôi vẫn không thể truy vấn kết quả được nhóm.
group=true&group.field=ContactId&group.query=(Green AND Yellow)&q=(Green OR Yellow)
Ý tưởng Tôi đi theo là truy vấn (q) để nhận tất cả các tài liệu trong đó có một trong hai màu xanh lá cây hoặc màu vàng hơn làm nhóm trên group.field ContactId và sau đó các group.query với VÀ Điều kiện màu xanh lá cây và màu vàng. Nhưng điều đó đã không thành công.
trong MySQL người ta sẽ làm chỉ là một
group_concat(Properties) as grouped
và làm một như trên chuỗi:
grouped LIKE '%Green%' AND grouped LIKE '%Yellow%'
Làm thế nào tôi có thể đạt được truy vấn này về chỉ số Solr?
Cố gắng cho đến nay như đề xuất với dấu ngoặc kép và không có:
intersect(
search(w3, q=Properties:("Green"), fl="ContactId", sort="ContactId asc"),
search(w3, q=Properties:("Yellow"), fl="ContactId", sort="ContactId asc"),
on="ContactId")
có nguồn gốc từ các ví dụ Solr của giao nhau:
intersect(
search(w3, q=Properties:("Green" OR "Green" AND "Yellow"), fl="ContactId", sort="ContactId asc"),
search(w3, q=Properties:("Yellow" OR "Green" AND "Yellow"), fl="ContactId", sort="ContactId asc"),
on="ContactId")
Nhưng vẫn chỉ kết quả hiện ra nơi cả hai tính chất này là bên trong cùng một tài liệu và không phải là nơi mà mỗi người trong số đó được phân chia trên nhiều tài liệu của cùng một ContactId (Chỉ C2 trong trường hợp đó, nhưng không phải C1).
bạn bắt buộc phải làm điều đó với mô hình dữ liệu hiện tại? vì vậy không có thời gian tham gia có thể cho bạn hay không? – Mysterion
Không, tôi không thể thay đổi nó – gantners