如何设置 fuse.js 选项
How to set fuse.js options
const JSON = [
{
"name": "01,02"
},
{
"name": "01"
},
{
"name": "05"
},
{
"name": "06,09"
},
{
"name": "04,05"
},
{
"name": "02,03"
},
{
"name": "02,04,05"
},
{
"name": "01,02"
},
{
"name": "01,03"
}
]
function foo (str) {
const options = {
keys: ['name'],
threshold: 0,
location: 0,
distance: 100,
minMatchCharLength: str.length
}
const _fuse = new Fuse(JSON, options)
console.log(_fuse.search(str))
}
foo('03')
<script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script>
我正在尝试使用 fuse.js
进行过滤。我不确定如何使用这些选项。如果我使用 03
进行搜索,我不会返回任何结果。我试过改变位置和阈值但没有完全理解它。我将 minMatchCharLength
设置为查询字符串的长度,认为这样可以防止 01
的查询返回仅包含 0
的项。对吗?
尝试将 "name"
更改为 name
:
const JSON = [
{
name: "01,02"
},
{
name: "01"
},
{
name: "05"
},
{
name: "06,09"
},
{
name: "04,05"
},
{
name: "02,03"
},
{
name: "02,04,05"
},
{
name: "01,02"
},
{
name: "01,03"
}
];
在这里您可以找到一个演示,它允许您 'play' 配置。
您可以粘贴 json 并尝试获得不同的结果:
Link
关于配置的更多信息,您可以参考前面link的步骤2,其中解释了所有选项。
例如: threshold :匹配算法在什么时候放弃。 0.0 的阈值需要完美匹配(字母和位置),1.0 的阈值将匹配任何东西
这里有一个示例演示:jsfiddle
您的代码已经很好了。
您将阈值设置为 0
,这意味着
fuse requires a perfct match (of both letters and location)
并且没有 name
属性 正好是 03
.
因此,如果您 fiddle 仅使用阈值并将其设置为 0.2
例如 - 您将从搜索中获得一些结果:
[{name: "02,03"}, {name: "01,03"}]
const JSON = [
{
"name": "01,02"
},
{
"name": "01"
},
{
"name": "05"
},
{
"name": "06,09"
},
{
"name": "04,05"
},
{
"name": "02,03"
},
{
"name": "02,04,05"
},
{
"name": "01,02"
},
{
"name": "01,03"
}
]
function foo (str) {
const options = {
keys: ['name'],
threshold: 0,
location: 0,
distance: 100,
minMatchCharLength: str.length
}
const _fuse = new Fuse(JSON, options)
console.log(_fuse.search(str))
}
foo('03')
<script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script>
我正在尝试使用 fuse.js
进行过滤。我不确定如何使用这些选项。如果我使用 03
进行搜索,我不会返回任何结果。我试过改变位置和阈值但没有完全理解它。我将 minMatchCharLength
设置为查询字符串的长度,认为这样可以防止 01
的查询返回仅包含 0
的项。对吗?
尝试将 "name"
更改为 name
:
const JSON = [
{
name: "01,02"
},
{
name: "01"
},
{
name: "05"
},
{
name: "06,09"
},
{
name: "04,05"
},
{
name: "02,03"
},
{
name: "02,04,05"
},
{
name: "01,02"
},
{
name: "01,03"
}
];
在这里您可以找到一个演示,它允许您 'play' 配置。 您可以粘贴 json 并尝试获得不同的结果: Link
关于配置的更多信息,您可以参考前面link的步骤2,其中解释了所有选项。 例如: threshold :匹配算法在什么时候放弃。 0.0 的阈值需要完美匹配(字母和位置),1.0 的阈值将匹配任何东西
这里有一个示例演示:jsfiddle
您的代码已经很好了。
您将阈值设置为 0
,这意味着
fuse requires a perfct match (of both letters and location)
并且没有 name
属性 正好是 03
.
因此,如果您 fiddle 仅使用阈值并将其设置为 0.2
例如 - 您将从搜索中获得一些结果:
[{name: "02,03"}, {name: "01,03"}]