2012-05-23 31 views

Trả lời

34

Cách kinh điển là thế này:

fieldName:[* TO *] 

Sử dụng một '' ở phía bên trái như Paige Nấu gợi ý có thể sẽ làm việc quá nhưng tôi không tin tưởng nó nhiều như tôi làm ở trên. Và vì đây là trường Vị trí, có thể bạn sẽ phải thực hiện việc này đối với một trong hai trường thực tế bên dưới so với trường tổng hợp lôgic này. Chúng bắt đầu bằng fieldName và kết thúc bằng một số hậu tố dạng số; tìm trong Trình duyệt lược đồ để xem tên thực tế là gì.

Một điều quan trọng cần lưu ý ở đây là một truy vấn như thế này là tốn kém cho Solr để làm khi thực hiện quét toàn bộ chỉ mục trên trường này. Nếu bạn có nhiều giá trị trường vị trí riêng biệt (hàng nghìn lần lên?) Thì đây là một vấn đề lớn. Nếu bạn làm điều này trong một truy vấn lọc, sau đó nó sẽ được lưu trữ và nó có lẽ là tranh luận. Nếu bạn muốn truy vấn này chạy nhanh, thì tại thời điểm chỉ mục bạn nên lập chỉ mục một trường boolean để biểu thị nếu có giá trị trong trường này hay không.

+0

Cảm ơn David, cú pháp [* TO *], kết hợp với việc kiểm tra cả hai trường sao lưu, có vẻ hoạt động chính xác (ví dụ: 'field_0_coord: [* TO *] AND field_1_coord: [* TO *]'). Cảm ơn cho các mẹo hiệu suất là tốt! – STW

+1

Bạn không phải làm điều này với cả hai trường phối hợp, chậm gấp hai lần, chỉ một lần. Nếu một người có giá trị thì cái còn lại và ngược lại. –

6

Bạn có thể thêm số này vào truy vấn của mình fieldname:['' TO *]. Điều này sẽ tương đương với kiểm tra NOT NULL.

tôi nhận này từ bài - Solr - Field Not Null Searches

+0

Cảm ơn Paige, nhưng tiếc là có vẻ như không hoạt động cho 'Vị trí' – STW

+0

để mở rộng thêm một chút, trường cũng như trường sao lưu là số; đánh giá chúng chống lại '''' kết quả trong một NumberFormatException – STW

+0

Xin lỗi rằng tôi đã bỏ lỡ rằng đây là số. David Smiley có câu trả lời đúng. –

4

Đối với một lĩnh vực vị trí (solr.LatLonType), sử dụng các truy vấn lọc sau: -fieldName:[-90,-180 TO 90,180] (tọa độ ngoài phạm vi này vẫn còn hợp lệ)

-2

Hãy thử điều này q= !fieldname:NULL này sẽ tương đương với Fieldvalue là NOT NULL.

Được hỏi bởi STW Tôi có chỉ mục Solr với tập hợp tọa độ được lưu trữ dưới dạng loại Vị trí; Tôi muốn truy vấn các tài liệu mà trường này có giá trị không null.

Cú pháp truy vấn để thực hiện kiểm tra NOT NULL trên trường Vị trí là gì?

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