【发布时间】:2018-05-06 07:36:15
【问题描述】:
我有如下所示的 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 和 name.last 属性。我以为matchAllTokens
【问题讨论】:
-
我没有看到这种行为 - 至少在最新版本的库中没有:)
标签: javascript fuse.js