2015-11-20 9 views
6

Czy ktoś może wskazać mi właściwy kierunek wdrożenia?Jak korzystać z Microsoft.Azure.Search SearchContinuationToken

Dotychczas mogę zapytać mojego indeksu i uzyskać odpowiedź

SearchIndexClient indexClient = service.Indexes.GetClient(indexName); 
SearchParameters sp = new SearchParameters() 
     { 
      Facets = new string[] { "Brand", "Price,values:10|25|100|500|1000|2500" }, 
      Filter = AzureUtils.BuildFilter(brand, priceFrom, priceTo), 
      OrderBy = new string[] { "" }, 
      IncludeTotalResultCount = true, 
      Top = 9, 
      SearchMode = SearchMode.Any 
     }; 
     DocumentSearchResponse<MyClass> response = response = indexClient.Documents.Search<MyClass>(searchText, sp); 

Gdy wynik pochodzi z powrotem response.ContinuationToken jest null

Jak mogę dostać mój indeksu zwrócić wartość na odpowiedź .ContinuationToken Właściwość.

Ponadto, w jaki sposób mogę to zaimplementować, aby pobrać kolejne 9 wyników?

Dzięki

+0

Jaka jest łączna liczba wyników zwróconych w odpowiedzi? –

+0

Wynik jest większy niż 0. Suma różni się w zależności od mojego zapytania, ale zwykle wynosi od 1 do 50. – user3612921

Odpowiedz

4

znalazłem moją odpowiedź tutaj - Link

Ta nieruchomość będzie null chyba zażądać więcej wyników niż rozmiar strony. Może się to zdarzyć, gdy nie wybierzesz opcji Top i pojawi się więcej niż 50 wyników (domyślny rozmiar strony to 50) lub gdy zostanie określona wartość większa niż 1000 dla opcji Góra i pojawi się więcej niż 1000 wyników (maksymalna wielkość strony to 1000) . W obu przypadkach można przekazać wartość tej właściwości do metody ContinueSearchAsync w celu pobrania następnej strony wyników.

Mam nadzieję, że pomaga kogoś innego jeśli utkną jak ja

+0

Ta odpowiedź przy jednoczesnym dopasowaniu dokumentacji nie pomaga, OP i ja sam mieliśmy takie samo zrozumienie jak wyjaśniono tutaj, ale kiedy nie ma kontynuacji token jest zwracany, gdy wiemy, że jest więcej wyników, które wracamy do pytania OP. Wygląda na to, że token kontynuacyjny jest dostarczany tylko po osiągnięciu limitu rozmiaru strony wewnętrznej lub gdy rozmiar strony jest większy niż domyślny 50. –

4

TL; wersja DR: Najbezpieczniejszym założeniem jest to, że obecność lub nieobecność wyraz kontynuacji w odpowiedzi wyszukiwarka jest całkowicie poza kontrolą.

Urządzenie SearchContinuationToken nie służy do stronicowania wyników. Właśnie do tego służą. Zamiast tego możesz myśleć o tokenie kontynuacji jako mechanizmie wznowienia wyszukiwania, którego nie można ukończyć w jednym żądaniu z potencjalnie arbitralnych powodów. Dokumenty w MSDN określają rozmiar strony jako przyczynę, ale nie należy rozumieć, że jest to częścią umowy z ContinueSearch. Zasadniczo mogą istnieć inne powody, dla których usługa Azure Search oddaje token kontynuacji. Bez względu na przyczynę, jeśli chcesz napisać solidnego klienta, powinieneś być przygotowany do obsługi tokenów kontynuacji, niezależnie od liczby: Top, liczby wyników lub innych czynników.

+0

Bruce, bardzo dziękuję za to. Zastanawiam się nad tym samym i pomyślałem, że token kontynuacji może być użyty do przywoływania. Dzięki za wytłumaczenie! – richard