2017-09-20 109 views
7

Şu anda Azure Search SDK'yi deniyorum. lucene ve bobobrowse ile çalışan güçlü bir arka plana sahip olan Azure Search, oldukça harika ve her iki çerçeveden kutudan çok fazla özelliğe sahip.Azure Search: fiyat aralığı - minimum ve maksimum değer hesaplama

Şaşırdığım tek şey sayısal bir öğenin minimum ve maksimum değerini elde etmektir. niyeti ile, ben interval parameter ne de value lists kullanmak istemiyorsanız:

Azure Facet Navigation

Benim gereksinimi hesaplanmış minimum ve maksimum değer ile fiyat yönüyle göstermektir. Aşağıdaki web sitesi kendi faset listesinde böyle bir yönünü vardır: Mevcut masaüstü uygulaması (Net) başarıyla BoboBrowse çerçeve kullanılmış ve aşağıdaki resimde görülen istenen sonuçları elde etmek için Custom-FacetHandler uygulanan yılında

Price Range

aşağıda:

MultiValue Facet Handler Result

bu resimlerin içinde faset değerlerini boşver. Bunlar sadece uzunluk, yükseklik ve diğer karakteristik değerlerdir.

Bu, gösterim amacıyla bir belgeyi nasıl oluşturduğumdur. Dinamik olarak üretilen bir fiyat alanı var. Masmavi arama nedeniyle her endeks için güçlü bir şemaya ihtiyaç duyar. Şemayı dizin oluşturma işleminde güncellerim. Bu çok iyi çalışıyor.

Price Field

Yani soru i masmavi arama ile gerekli işlevselliği elde edebilirsiniz nasıl?

Elastik aramada, böyle bir sorun Aggregations kullanılarak çözülebilir. Bu özellik Azure Search'te var mı?

+0

, ben toplamakkakakları Azure Ara desteklenmez söyleyebilirim. Buraya bakın (https://feedback.azure.com/forums/263029-azure-search/suggestions/8382225-add-aggregations-functionality) – Kolichikov

cevap

1

$filter parametresi, lt (daha az) ve gt (büyük harf) işleçlerini destekler. $filter=price gt 0 and price lt < 100

Numune kodu: Örneğin:

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; 
} 

Referans: Sana bi cevap yok iken Build a filter for a range

+0

Sadece filtreleme işlemi için bu doğrudur ama Gerçek aralık yönlerini talep ederken minimum ve maksimum değerler – Sneijder