Просто взгляните на threshold
(взято из http://fusejs.io/ )
0.0
В какой момент алгоритм совпадения сдаётся. Порог
1.0
требует идеального соответствия (как букв, так и местоположения), порог которого0.2
будет соответствовать чему угодно.
и, например, изменить значение threshold
. Затем вы получаете результат.
Вы можете попробовать с большим набором данных несколько разных значений threshold
и проверить результаты.
var files = [{ name: "zips", type: "bDirectory", dateModified: "2018/5/10 17:39:27", size: "1 KB" }, { name: "presets", type: "eDirectory", dateModified: "2018/5/30 17:22:50", size: "4 KB" }, { name: "workflow", type: "dDirectory", dateModified: "2018/6/11 7:23:11", size: "5 KB" }, { name: "software", type: "aDirectory", dateModified: "2018/6/14 14:35:36", size: "2 KB" }, { name: "nmm_data", type: "fDirectory", dateModified: "2018/6/14 15:37:08", size: "6 KB" }, { name: "jobs", type: "cDirectory", dateModified: "2018/6/15 13:43:47", size: "3 KB" }],
searchString = "sets",
options = { keys: ['name', 'type', "dateModified", "size"], threshold: 0.2, caseSensitive: false },
f = new Fuse(files, options),
output = f.search(searchString),
i;
document.getElementById("searchString").innerHTML = searchString;
document.getElementById("json").value = JSON.stringify(files);
console.log(output);
for (i = 0; i < output.length; i++) {
document.getElementById('results').innerHTML += output[i].name + ' ... ' + output[i].type + ' ... ' + output[i].dateModified + ' ... ' + output[i].size + '<br />'
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.0.4/fuse.min.js"></script>
<h2>data:</h2>
<textarea id="json" cols="30" rows="10"></textarea>
<h2>Search for: <span id="searchString"></span></h2>
<h2>Results:</h2>
<div id="results"></div>