You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Fuse.js中实现多词模糊搜索:忽略词序与中间内容

Fuse.js 多关键词无序匹配实现方案

问题分析

你需要实现:输入搜索词“team lead”时,匹配所有包含team或lead的结果(不管词序、中间内容),但之前的配置未达到预期效果,核心原因是**threshold:0会强制Fuse匹配整个搜索短语而非拆分后的单个关键词**。

解决方法

通过以下配置和逻辑实现需求:

1. 正确配置Fuse实例

显式开启分词,并调整阈值让单个关键词精确匹配,同时允许任意关键词命中:

const possibleResults = ['lead', 'team lead', 'lead of software development team'];

const fuseOptions = {
  tokenize: true, // 强制拆分搜索词为单个关键词
  matchAllTokens: false, // 只要匹配任意一个关键词即可(若需同时匹配所有则设为true)
  threshold: 0, // 单个关键词精确匹配
  ignoreLocation: true, // 忽略关键词在文本中的位置
  includeScore: false // 可选,不需要分数的话可以关闭
};

const fuse = new Fuse(possibleResults, fuseOptions);

2. 执行搜索

直接传入搜索词即可,Fuse会自动拆分关键词并匹配所有包含任意关键词的结果:

const results = fuse.search('team lead');
// 输出结果会包含所有三个项:['lead', 'team lead', 'lead of software development team']

关键参数说明

  • tokenize: true:将搜索词拆分为独立的关键词(比如“team lead”拆成['team', 'lead'])
  • matchAllTokens: false:采用OR逻辑,只要结果包含任意一个关键词就命中;如果需要必须同时包含所有关键词,改为true即可
  • threshold: 0:确保单个关键词是精确匹配,不会出现模糊匹配的偏差
  • ignoreLocation: true:忽略关键词在文本中的位置,不管词序或中间有多少内容,只要存在关键词就匹配

验证结果

运行上述代码后,搜索“team lead”会返回你预期的所有三个结果,完全符合需求。

内容的提问来源于stack exchange,提问作者Dennis Nedry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:27:30