2012-05-10 11 views
5

Rozważam użycie CouchBase do bardzo ciężkiej aplikacji do odczytu i pisania. Będę również musiał wspierać wyszukiwanie w oparciu o różne atrybuty dokumentów, a także zapytania dotyczące zakresu.Wyszukiwanie w zakresie CouchBase

CouchBase ma widoki pozwalające wyszukiwać poza wyszukiwanie według wartości klucza, ale wygląda na to, że jest to głównie w celu uzyskania dokumentów w określonym zakresie, np. uzyskać wszystkie dokumenty indeksowane między dwoma określonymi kluczami, zamiast "daj mi wszystkie dokumenty, które mają atrybut gatunku do" przygody "" lub "daj mi wszystkie dokumenty, które mają datę utworzenia od 1/1/1 do 2/1/1"

Czy istnieje sposób na osiągnięcie tego, czego chcę, bez zewnętrznego indeksu?

Odpowiedz

3

Z pewnością możesz zrobić to, co opisujesz. Zrobisz oba z widokami w Couchbase Server 2.0.

Na przykład często używaną techniką podczas wyszukiwania zakresu dat jest wyemitowanie tablicy JSON z funkcji mapy w widoku. To dałoby ci coś takiego: [2012, 5, 11, 16, 27, 41]

Ponieważ podczas kwerendy widoku, tablica JSON jest poprawnym miejscem na klucz start i klucz końcowy, można określić, że zasięg.

Podobnie, wyodrębniając wszystkie atrybuty, które wyemitujesz, każdy z nich z funkcji mapy z doc-id. Następnie za pomocą jednego z Couchbase SDKs, możesz ustawić opcję dołączania dokumentów podczas odpytywania, a dokument zostanie automatycznie pobrany.

+0

Dziękuję za odpowiedź, kilka pytań, może głupich. Dlaczego Twoja macierz ma tak wiele elementów, czy nie powinno to być [rrrr, mm, dd]? Ponadto, nie jestem pewien co do drugiej części. Istnieje przykład [tutaj] (http://www.couchbase.com/develop/java/next), ale jak określić konkretny atrybut dokumentu do filtrowania według? – Kailash

+0

Dodałem elementy na godzinę, minutę, sekundę, to wszystko. Nie jestem jednak pewien, jakie jest twoje drugie pytanie. –

+0

Myślę, że mam to teraz, dziękuję bardzo! – Kailash