Ok, antes que nada, perdón por mi inglés.IndexedDB Fuzzy Search
Estoy trabajando en un proyecto web que el programa sugiere cuando escribo algo en la casilla de entrada, pero quiero usar IndexedDB para mejorar la velocidad de consulta en Firefox.
Con WebSQL tengo esta frase:
db.transaction(function (tx) {
var SQL = 'SELECT "column1",
"column2"
FROM "table"
WHERE "column1" LIKE ?
ORDER BY "sortcolumn" DESC
LIMIT 6';
tx.executeSql(SQL, [searchTerm + '%'], function(tx, rs) {
// Process code here
});
});
quiero hacer lo mismo con IndexedDB y tengo este código:
db.transaction(['table'], 'readonly')
.objectStore('table')
.index('sortcolumn')
.openCursor(null, 'prev')
.onsuccess = function (e) {
e || (e = event);
var cursor = e.target.result;
if (cursor) {
if (cursor.value.column1.substr(0, searchTerm.length) == searchTerm) {
// Process code here
} else {
cursor.continue();
}
}
};
Pero no es demasiado lento y mi código tiene fallos .. Quiero saber si hay una mejor manera de hacer esto.
Gracias por su respuesta.
¡Muchas gracias! Esto lo redujo de 3500 ms a 140 ms para mí. – pimvdb
@pimvdb Es bueno saber que lo encontraste útil. Añadí un ejemplo más sobre la clasificación del resultado. –
Sería mejor usar '\ uffff' como su daga en lugar de z. No obtendrá resultados de búsqueda como "wikipædia" cuando busque "wiki" si usa z ... –