关于Fuse.js演示程序返回意外搜索结果的问询
问题原因及解决办法
这是Fuse.js默认模糊搜索规则导致的:
- 默认**阈值(threshold)**为0.6,这个值允许一定程度的字符差异,只要内容和搜索词的编辑距离落在阈值范围内就会被匹配。你看到的那两个无关条目,刚好和"remy"的字符相似度卡在了默认阈值内,所以被误返回。
- 默认会遍历对象的所有字段(包括title、author下的所有子字段),而非仅限定在
author.firstName字段搜索,进一步扩大了匹配范围。
解决办法
1. 限定搜索字段
初始化Fuse时,通过keys参数指定只在author.firstName字段中搜索,避免无关字段干扰:
const fuse = new Fuse(data, { keys: ['author.firstName'] });
2. 提高搜索精度
将threshold参数设为更小的值(比如0.2),只有和搜索词高度匹配的结果才会被返回:
const fuse = new Fuse(data, { keys: ['author.firstName'], threshold: 0.2 });
调整后再搜索"remy",就只会返回包含Remy的那条结果了。
内容的提问来源于stack exchange,提问作者Jason Polites
相关产品推荐
相关产品推荐

