2013-05-24 29 views
6

Đối với truy vấn bộ lọc trong Solr, tôi cần bao gồm tất cả tài liệu không thuộc loại nhất định, cộng với mọi tài liệu thuộc loại có giá trị trong một trường nhất định.Truy vấn bộ lọc Solr bao gồm NOT và OR

Tôi cố gắng này:

fq=(-type_id:(A) OR content:(['' TO *])) 

Nhưng nó không bao gồm các tài liệu của type_id B, C, vv mà có null content. (type_id là một lĩnh vực stringcontenttext.)

Tôi đã thấy câu hỏi này: Complex SOLR query including NOT and OR và sau này về nhà khai thác: http://robotlibrarian.billdueber.com/solr-and-boolean-operators/. Tôi nghĩ cú pháp tôi cần phải chính xác. Có ai có thể thấy lỗi của tôi không?


Cập nhật: Tôi đang sử dụng LuceneQParser. Nó phân tích các truy vấn lọc trên như

-type_id:A content:['' TO *] 

Nó phân tích các truy vấn lọc gợi ý trong các ý kiến ​​(-type_id:A OR (content:[* TO *] AND type_id:A)) như

-type_id:A (+content:[* TO *] +type_id:A) 

nên không có kết quả.

+0

những gì bạn muốn đạt được ?? type_id không A HOẶC tất cả các tài liệu không có nội dung hoặc một số nội dung? – Jayendra

+0

@Jayendra Xem câu đầu tiên của câu hỏi của tôi: không có giới hạn đối với các tài liệu không phải là type_id = A; nếu chúng là type_id = A, chúng phải có nội dung không null. Tôi cũng đã thử, ví dụ, 'fq = ((type_id: (A) AND nội dung: (['' TO *])) HOẶC type_id: (*))', nhưng vẫn không có may mắn. – Kimberly

+1

Bạn có thể thử fq = -type_id: A OR (nội dung: [* TO *] AND type_id: A) – Jayendra

Trả lời

11

Sự phủ cần có một bộ hoàn chỉnh để phù hợp với nó, vì vậy bộ lọc của bạn nên là:

fq=((*:* AND -type_id:A) OR content:(['' TO *])) 
Các vấn đề liên quan