我有如下所示的 JSON 对象:
[
{
"name": { "first": "John", "last": "Doe" }
},
{
"name": { "first": "Foo", "last": "Bar" }
}
]
我的 FuseJS 搜索选项是:
var searchOpts = {
shouldSort: true,
threshold: 0.2,
location: 0,
distance: 100,
maxPatternLength: 32,
minMatchCharLength: 5,
matchAllTokens: true,
keys: [{
name: "name.first",
weight: 0.3
}, {
name: "name.last",
weight: 0.3
}]
}
我正在做的是获取用户输入的值并从包含所有人姓名的对象中搜索。
var fuse = new Fuse( peopleObj, searchOpts);
var result = fuse.search( query );
只要用户仅使用名字或姓氏进行搜索,一切都可以正常工作,但是如果他们例如键入“John Doe”,则不返回应该返回的对象,但如果他们只键入“John ”或“Doe”。
我可以通过简单地在对象内部设置另一个属性来实现这一点,"name": {"fullName": "John Doe"}
但我对此并不满意,因为未来数据可能会变得更大,这只会浪费处理能力。
如何确保 FuseJS通过组合而不是单独搜索name.first
and属性。name.last
我想matchAllTokens