Очень легко искать буквы в начале строки.Вам просто нужно представление, которое выдает строку, которую вы хотите найти в качестве ключа.Предполагая, что пользовательский ввод хранится в переменной q
, вы затем вызываете это представление с параметрами startkey=q
и endkey=q+"\ufff0"
.
. Хитрость заключается в добавлении максимально возможного символа Unicode в строку поиска.,В порядке сортировки эта строка идет после всего, что начинается с q
.(Это гораздо проще реализовать, чем решение, предложенное @titanoboa, где вам нужно «увеличить» последнюю букву пользовательского ввода.)
Если вы также хотите иметь возможность находить слова в серединестроки (например, «Отчет Колберта» при вводе «co»), вы можете использовать вид, подобный следующему:
function(doc) {
if (doc.title) {
var words = {};
doc.title.replace(/\w+/g, function(word) {
words[word.toLowerCase()] = true;
});
for (w in words) {
emit(w, doc);
}
}
}
Конечно, это рекомендуется только для коротких строк.Для поиска в более длинных текстах вы должны заглянуть в надстройку полнотекстового поиска, например couchdb-lucene .