fuse.js是一个轻量的模糊搜索库
npm install --save fuse.js
import Fuse from 'fuse.js'
const list = [...] // 带搜索的数据
const options = {keys:['name']} // 搜索配置,可以配置多个查找字段
const fuse = new Fuse(list, options);
return fuse.search('psr') // 根据模式返回搜索结果,形式如[{item:{匹配的对象},refIndex:0},...]
配置项 | 描述 | 默认值 | 说明 |
---|---|---|---|
isCaseSensitive | 大小写敏感 | false | |
includeScore | 结果包含匹配度 | false | 结果值:0表示完全匹配,1表示完全不匹配 |
includeMatches | 结果包含匹配字符的索引值 | false | 可用于高亮显示搜索字符的场景 |
minMatchCharLength | 最小匹配长度 | 1 | 可用于需要至少几个字符才执行搜索的场景 |
shouldSort | 结果集排序 | true | 结果集按照匹配度排序 |
findAllMatches | 查找所有项目 | false | 即使找到了完全匹配项目也继续查找完其他所有项目 |
keys | 查找字段配置 | 被查字段的路径(支持嵌套查找),权重(默认权重值为1),例如:[‘name.first’,{name:‘name.last’,weight:0.5}] | |
location | 匹配的字符预期的位置 | 0 | 匹配到的字符距离指定位置越近分数越高 |
threshold | 匹配度阈值 | 0.6 | 0.0表示完全匹配(字符和位置);1.0将会匹配所有值 |
distance | l匹配的字符在location指定位置的范围 | 100 | 0表示必须正好在location指定的位置 |
ignoreLocation | 忽略location配置参数 | false | location和distance都会被忽略 |