我在一个项目中使用 Fuse.js 并试图让一些行为正常工作,但我发现 Fuse 给出的结果令人困惑。
作为参考,我使用这些选项来初始化 Fuse:
includeMatches: true,
shouldSort: true,
includeScore: true,
threshold: 0.2,
distance: 100,
maxPatternLength: 32,
minMatchCharLength: 1,
keys: [
{ name: 'name', weight: 1 },
{ name: 'description', weight: 0.25 },
{ name: 'tags', weight: 0.1 },
{ name: 'other', weight: 0.05 },
]
例如,当我搜索“亚洲人”时,我得到以下结果:
Nice Restaurant by the Sea
Score: 0.00095
Matched by:
tags -> Asian
Sweet Lao Restaurant
Score: 0.00095
Matched by:
tags -> Asian
Oriental Cuisine
Score: 0.00095
Matched by:
description -> Maybe the best Asian restaurant in the world!
tags -> Asian
Sushi Asian Fusion Grill
Score: 0.00095
Matched by:
name -> Sushi Asian Fusion Grill
tags -> Asian
现在据我了解,当我将“名称”键的权重设置为 1(最大值)时,我希望它首先匹配Sushi Asian Fusion Grill或将其排名高于其他,因为名称应该是更高的影响者分数,但似乎它给所有人的分数基本相同,无论是仅与标签匹配还是名称和标签都匹配。
这是预期的行为吗?我怎样才能做到这一点,如果它在名称中找到它,它会排名更高?
谢谢