Es muy fácil buscar letras al principio de una cadena. Solo necesita una vista que emita la cadena que desea buscar como la clave. Suponiendo que la entrada del usuario se almacena en una variable q
, llame a esa vista con los parámetros startkey=q
y endkey=q+"\ufff0"
.
El truco aquí es agregar el carácter Unicode más alto posible a la cadena de búsqueda. En el orden de clasificación, esta cadena viene después de todo lo demás, comenzando con q
. (Esto es mucho más fácil de implementar que la solución sugerida por @titanoboa, donde necesita "incrementar" la última letra de la entrada del usuario.)
Si también desea poder encontrar palabras en el medio de un cadena (por ejemplo, "The Colbert Report" al escribir "co"), se puede utilizar una vista como esta:
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);
}
}
}
por supuesto, esto sólo es aconsejable para las cadenas cortas. Para buscar en textos más largos, debe buscar en un complemento de búsqueda de texto completo como couchdb-lucene.
¿Por qué es el carácter Unicode más alto posible 'fff0' y no' ffff'? – Jez
@Jez Esa es una buena pregunta, no tengo idea de por qué escribí '\ ufff0' en ese entonces. Supongo que el punto de código correcto sería '\ u {10FFFF}', pero no lo he probado. (https://en.wikipedia.org/wiki/UTF-8#Description) –