2011-10-06 29 views
8

Tùy chọn cuối cùng để giải quyết vấn đề này là hỏi StackOverflow.Làm thế nào để HOẶC giá trị null trong truy vấn Apache Solr?

tôi đang cố gắng để tạo ra một truy vấn Solr để có được tài liệu có giá trị cụ thể về một trong các lĩnh vực của nó HOẶC mà không có một giá trị ...

theorically, truy vấn này nên đã làm việc.

Dưới đây là một số thông tin:

Query: (tên: john) -> Kết quả đếm: 15.383 // Johns

Query: (tên: {* ĐẾN *}) - -> đếm Kết quả: 61.013 // dân rằng có một tên

Query: - (tên: {* ĐẾN *}) -> đếm Kết quả: 216.888 // dân mà không có một tên

Bây giờ, khi tôi sử dụng truy vấn thứ nhất và thứ ba trong cùng một truy vấn với toán tử OR, tôi mong đợi nhận được (216888 + 15383) kết quả. Nhưng SOLR cung cấp cho 15383 kết quả, chỉ cần bỏ qua tác động của truy vấn thứ ba:

Truy vấn: + ((tên: john) (- (name: {* TO *}))) // Đây là truy vấn tôi đã đã sử dụng.

Đây có phải là lỗi của Solr hoặc tôi đang làm sai trong truy vấn không? Việc hợp nhất hai kết quả truy vấn là một giải pháp bổ sung nhưng tôi không muốn thực hiện thêm mã nếu tôi có thể thực hiện nó bằng một truy vấn đơn giản.

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

16

(-name:[* TO *] AND *:*) OR name:john

+0

đã làm việc cho tôi !! – Raj

+0

Đây chỉ là những gì tôi cần. Cảm ơn. Bạn có thể giải thích những gì 'AND *: *' làm trong ví dụ này? Tôi thấy rằng tìm kiếm của tôi không hiệu quả nếu tôi bỏ phần đó ra, tôi không chắc tại sao. –

+0

'*: *' có nghĩa là tất cả các hàng. '*: * -name: *' có nghĩa là tất cả các hàng không có giá trị tên. 'name: john OR (*: * -name: *)' có thể được dịch thành SQL dưới dạng 'name = 'john' OR name IS NULL' – Semra

-1

thử truy vấn dưới đây -

q=(name:john OR -(name:[* TO *])) 
+0

Vẫn như cũ. 15383 kết quả. – emregecer

+2

Tôi tìm thấy giải pháp trong [link] này (http://stackoverflow.com/questions/1343794/searching-for-date-range-or-null-no-field-in-solr) – emregecer

+1

- (- (tên: john) + (tên: {* TO *})) – emregecer

1

Bạn cũng có thể sử dụng nó như thế này.

&fq=name:john OR !name:['' TO *] 
Các vấn đề liên quan