Jak wykonać sparametryzowane zapytanie na CouchDB

Chciałbym użyć CouchDB do przechowywania niektórych danych dla mnie, a następnie użyć wywołań api RESTful, aby uzyskać potrzebne dane. Moja baza danych nazywa się „test”, a wszystkie moje dokumenty mają podobną strukturę i wyglądają mniej więcej tak (gdzie hello_world jest identyfikatorem dokumentu):

"hello_world" : {"id":123, "tags":["hello", "world"], "text":"Hello World"}
"foo_bar" :{"id":124, "tags":["foo", "bar"], "text":"Foo Bar"} 

Chciałbym, aby moi użytkownicy wysłali zapytanie, na przykład: „Daj mi wszystkie dokumenty zawierające słowa„ witaj świecie ”, na przykład. Bawiłem się widokami, ale wygląda na to, że pozwolą mi tylko przenieść jedną lub więcej tych wartości do „kluczowej” części funkcji mapy, co daje mi możliwość zrobienia czegoś takiego:

http: // localhost: 5984 / test / _design / search / _view / search_view? key ="dzień dobry"

Ale to nie pozwala mi pozwolić moim użytkownikom na określenie ciągu zapytania. Na przykład, jeśli szukali „witaj świecie”. Musiałbym wykonać dwa zapytania: jedno dla „cześć” i jedno dla „świata”, a potem musiałbym napisać kilka javascript, aby połączyć wyniki, usunąć duplikaty itp. (YUCK!). To, czego naprawdę chcę, to być w stanie zrobić coś takiego:

http: // localhost: 5984 / test / _design / search / _view / search_view? term ="Witaj świecie"

Następnie użyj parametru „witaj świecie” w funkcjach mapowania widoków / zmniejszania, aby znaleźć wszystkie dokumenty zawierające zarówno „cześć”, jak i „świat” w tablicy znaczników. Czy jest to możliwe nawet z CouchDB? Czy jest inny sposób na osiągnięcie tego w widoku, o którym nie myślę?

questionAnswers(2)

yourAnswerToTheQuestion