1

本主题说明如何使用 IndexedDB 在搜索词结尾处使用通配符。

我正在寻找一种在搜索词的末尾和开头添加通配符的方法。在 SQL 中它将是:LIKE '%SearchTerm%'.

如何使用 IndexedDB 实现这一目标?这是我的代码:

function getMaterials() {
    var materialNumber = $("#input").val();
    var transaction = db.transaction(["materials"]);
    var objectStore = transaction.objectStore("materials");

    var request = objectStore.openCursor(IDBKeyRange.bound(materialNumber, materialNumber + '\uffff'), 'prev');
    $("#output").find("tr:gt(0)").remove();

    request.onsuccess = function (event) {

        var cursor = event.target.result;
        if (cursor) {
            var newRow = '<tr><td>'+ cursor.value.materialNumber +'</td>'+
                 '<td>'+ cursor.value.description +'</td>'+
                 '<td>'+ cursor.value.pieces +'</td>'+
                 '<td>'+ cursor.value.price +'</td></tr>';

            $('#output').append(newRow);

            cursor.continue();
        }
    };
};

编辑:

我可以通过让 indexDB 返回所有行然后在 JavaScript 中缩小范围来实现这一点。但是在性能方面必须有更好的方法。

if (cursor.value.materialNumber.indexOf(materialNumber) != -1){
     //add result...
}
4

1 回答 1

1

这不是 idb 的预期用途。如果您想要文本搜索,请将文本解析为标记,存储标记,使用标记上的索引,并在索引上进行查找以获取指向全文的指针。

于 2013-08-09T15:02:30.240 回答