2017-09-20 76 views
7

Hiện tại, tôi đang thử Azure Search SDK. Có nền tảng mạnh mẽ hoạt động với lucenebobobrowse, Tìm kiếm Azure khá tuyệt vời và có rất nhiều tính năng từ cả hai khung công cụ.Tìm kiếm Azure: phạm vi giá - giá trị tối thiểu & giá trị tối đa

Điều duy nhất tôi thấy khó hiểu là có được giá trị tối thiểu và tối đa của một mục khía cạnh số. Bởi ý định, tôi không muốn sử dụng interval parameter lẫn value lists:

Azure Facet Navigation

Yêu cầu của tôi là để hiển thị các khía cạnh giá với mức tối thiểu tính toán và giá trị tối đa. trang web sau đây có một khía cạnh như vậy trong danh sách khía cạnh của họ:

Price Range

Trong ứng dụng của tôi hiện có máy tính để bàn (Net) Tôi thành công sử dụng BoboBrowse khuôn khổ và thực hiện một Custom-FacetHandler để có được những kết quả mong muốn được thể hiện trong hình sau bên dưới:

MultiValue Facet Handler Result

Đừng bận tâm đến các giá trị khía cạnh trong những ảnh này. Đây chỉ là chiều dài, chiều cao và các giá trị đặc trưng khác của công cụ.

Đây là cách tôi tạo một tài liệu cho mục đích trình diễn. Có một trường giá được tạo động. Do tìm kiếm xanh nên cần lược đồ cố định mạnh mẽ cho mọi chỉ mục. Tôi cập nhật lược đồ trong quá trình lập chỉ mục. Điều này hoạt động rất tốt.

Price Field

Vì vậy, câu hỏi là làm thế nào tôi có thể đạt được các chức năng cần thiết với tìm kiếm xanh?

Trong tìm kiếm đàn hồi, vấn đề như vậy có thể được giải quyết bằng cách sử dụng Aggregations. Tính năng này có tồn tại trong Tìm kiếm Azure không?

+0

Trong khi tôi không có một câu trả lời cho bạn, tôi có thể nói với bạn rằng tính gộp không được hỗ trợ trong Azure tìm kiếm. Xem ở đây (https://feedback.azure.com/forums/263029-azure-search/suggestions/8382225-add-aggregations-functionality) – Kolichikov

Trả lời

1

Thông số $filter hỗ trợ các toán tử lt (nhỏ hơn) và gt (lớn hơn). Ví dụ: Mã $filter=price gt 0 and price lt < 100

mẫu:

string PriceFilter(double? fromPrice, double? toPrice) 
{ 
    var filter = "$filter="; 
    if(fromPrice.HasValue) 
      filter+="price gt " + fromPrice.Value.ToString() 
       + (toPrice.HasValue ? " and " : ""); 
    if(toPrice.HasValue) 
      filter+="price lt " + toPrice.Value.ToString(); 
    return filter; 
} 

tham khảo: Build a filter for a range

+0

Chỉ cho hoạt động lọc này là chính xác nhưng tôi đang tìm kiếm một cách để có được giá trị tối thiểu và cực đại khi yêu cầu các phạm vi phạm vi thực tế – Sneijder

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