Jeśli dobrze rozumiem Twój problem, prawdopodobnie wszystko, czego potrzebujesz, jest już wbudowane w CouchDB.
- Aby uzyskać szereg dokumentów, których nazwy zaczynają się od np. "Szynka". Możesz użyć żądania z zakresem ciągów:
startkey="Ham"&endkey="Ham\ufff0"
- Jeśli potrzebujesz bardziej wszechstronnego wyszukiwania, możesz utworzyć widok zawierający nazwy innych miejsc jako klucze. Możesz więc ponownie zapytać o zakresy, korzystając z powyższej techniki.
Oto funkcja widoku, która to umożliwia:
function(doc) {
for (var name in doc.places) {
emit(name, doc._id);
}
}
Zobacz także wpis na blogu CouchOne o wyszukiwaniu z wyprzedzeniem i autouzupełnianiu CouchDB oraz dyskusję na liście mailingowej na temat autouzupełniania CouchDB.