2011-12-30 35 views

Trả lời

15

Tôi không nghĩ rằng các phân tích cú pháp truy vấn hỗ trợ < điều hành. Bạn phải xác định rõ ràng RangeQuery. Sau đó, bạn có thể đính kèm truy vấn tên vào đó bằng cách sử dụng BooleanQuery.

Cập nhật: Rõ ràng, tôi đã sai. Trong thực tế, trình phân tích cú pháp truy vấn của Solr thông minh hơn của Lucene. Dưới đây là câu trả lời của bạn: http://wiki.apache.org/solr/SolrQuerySyntax#Differences_From_Lucene_Query_Parser

lĩnh vực: [* ĐẾN 100] tìm tất cả các giá trị trường nhỏ hơn hoặc bằng 100

9

cũng lưu ý rằng performancewise bạn nên sử dụng một truy vấn lọc cho điều này:

&q=name:ipod&fq=price:[* TO 100] 
5

Từ kiến ​​thức của tôi, tôi không tin rằng Solr/Lucene hỗ trợ lớn hơn/ít hơn. Nó có thể được thực hiện theo chương trình cho những thứ như số nguyên và ngày (và trong trường hợp của bạn, giá trị tiền, vì chỉ có hai chữ số thập phân để lo lắng về).

Ví dụ, nguyên bản, Lucene và Solr parsers truy vấn hỗ trợ nhỏ hơn hoặc bằng (< =):

?q=name:ipod AND price:[* to 99.99] 

Điều này sẽ cung cấp cho bạn ít hơn 100 đô la mà bạn đang tìm kiếm, cung cấp dữ liệu không liên quan đến phân số của một xu.

Đối với những thứ như ngày tháng và số nguyên, hoặc những thứ khác có sự khác biệt đáng kể, bạn có thể giảm (hoặc trong trường hợp lớn hơn, tăng) giá trị bạn đang sử dụng.

EDIT: Kiểm tra tài liệu cho phiên bản 6.5 của Solr. Nó có chứa hỗ trợ phạm vi độc quyền. Trang 272 của hướng dẫn tham khảo giải thích.

http://mirror.cc.columbia.edu/pub/software/apache/lucene/solr/ref-guide/apache-solr-ref-guide-6.5.pdf

Về cơ bản, sử dụng dấu ngoặc nhọn để biểu thị ít hơn.

?q=name:ipod AND price:{* TO 100} 
Các vấn đề liên quan