2012-08-08 27 views
17

Làm cách nào để loại trừ một tập hợp các ID tài liệu khỏi tập hợp kết quả Solr? Về cơ bản giống nhưLàm cách nào để KHÔNG truy vấn trong Solr?

/select?q=tag_id:367 AND NOT id:(306670,302209)

Tôi đã thử nó và nó không loại trừ tài liệu với những id.

Trả lời

20

Hãy thử điều này:

/select?q=*:*&fq=tag_id:367 AND id:[* TO *] -id:(306670 302209) 

Điều đó sẽ cho phép bạn xây dựng ra thêm bao nhiêu id như bạn muốn mà không cần phải thêm -id:302209 mỗi khi bạn muốn loại bỏ một ID. Ngược lại cũng đúng, bạn có thể hoán đổi - với một + và buộc một mảng các giá trị sẽ ở đó.

+0

Thx để gợi ý định dạng 'q = *: *'. Một trong những bạn đang đề xuất vẫn không loại trừ các tài liệu với id của 306670 và 302209. Nhưng điều này có: '/ select? Q = *: * & fq = tag_id: 367 AND -id: 306670 AND -id: 302209' Về cơ bản nhóm chức năng với các parantheses không hoạt động đối với tôi. – arun

+1

Có thể là do tôi đã thêm dấu phẩy vì một số lý do, hãy thử tách chúng bằng dấu cách. Tôi cũng sẽ cập nhật mã của mình. – harmstyler

+0

Yup, không gian làm việc. Cám ơn! – arun

8

Tìm thấy một giải pháp:

/select?q=tag_id:367&fq=-id:306670 AND -id:302209 

Không chắc cho dù đây là cách tốt nhất để làm điều đó mặc dù!

+0

Đó là cách - bạn cũng có thể làm id: -306670 -302209 – Ansari

+0

Thx để xác nhận. Tuy nhiên, cú pháp thay thế là ném org.apache.lucene.queryParser.ParseException cho tôi. – arun

+0

Hmm có thể là do trường tìm kiếm mặc định không được đặt thành 'id'. – Ansari

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