问题标签 [fuse.js]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1445 浏览

javascript - 使用一个搜索查询在两个属性中搜索

我有如下所示的 JSON 对象:

我的 FuseJS 搜索选项是:

我正在做的是获取用户输入的值并从包含所有人姓名的对象中搜索。

只要用户仅使用名字或姓氏进行搜索,一切都可以正常工作,但是如果他们例如键入“John Doe”,则不返回应该返回的对象,但如果他们只键入“John ”或“Doe”。

我可以通过简单地在对象内部设置另一个属性来实现这一点,"name": {"fullName": "John Doe"}但我对此并不满意,因为未来数据可能会变得更大,这只会浪费处理能力。

如何确保 FuseJS通过组合而不是单独搜索name.firstand属性。name.last我想matchAllTokens

0 投票
1 回答
749 浏览

javascript - 使用 Vue 没有从 Fuse.js 返回任何结果

所以我对 Vue 还很陌生,我正在尝试使用 Fuse.js 进行客户列表搜索。我确实得到了客户数组,并将其分配给 customer_search。我的密钥已正确填充,唯一的问题是结果不返回任何内容。我想知道我是否需要以不同的方式构建我的客户数组,或者我是否完全错过了其他东西?

任何帮助,将不胜感激。

这是我的代码:

0 投票
0 回答
371 浏览

fuse.js - 加权搜索选项在 Fuse.js 中是否正常工作?

我在一个项目中使用 Fuse.js 并试图让一些行为正常工作,但我发现 Fuse 给出的结果令人困惑。

作为参考,我使用这些选项来初始化 Fuse:

例如,当我搜索“亚洲人”时,我得到以下结果:

现在据我了解,当我将“名称”键的权重设置为 1(最大值)时,我希望它首先匹配Sushi Asian Fusion Grill或将其排名高于其他,因为名称应该是更高的影响者分数,但似乎它给所有人的分数基本相同,无论是仅与标签匹配还是名称和标签都匹配。

这是预期的行为吗?我怎样才能做到这一点,如果它在名称中找到它,它会排名更高?

谢谢

0 投票
2 回答
1964 浏览

javascript - Fuse.js:检索与多词搜索完全匹配的记录

使用Fuse.js我正在尝试在 JS 对象中进行“多个单词”搜索,以获取包含所查找的每个单词的记录。

我的数据结构如下(来自fuse.js):

我的问题是我的设置适用于单字搜索(Brown例如),但不适用于更多(Dan BrownDan Brown Vinci)。

保险丝选项:

0 投票
1 回答
2383 浏览

javascript - fuseJS 模糊搜索对我不起作用

有没有 fuseJS 专家可以告诉我为什么 fuseJS 模糊搜索不适合我,因为我认为它应该。(请参阅下面的演示代码。)当我搜索“预设”时,我得到一个返回结果,即:

预设 ... eDirectory ... 2018/5/30 17:22:50 ... 4 KB

但是当我搜索“集合”时,我没有得到任何结果。我不应该为这两个搜索获得相同的结果吗?我需要在选项中添加一些东西吗?或者 fuseJS 无法进行这种类型的搜索?

提前感谢您能给我的任何帮助。

下午

0 投票
0 回答
546 浏览

javascript - 匹配/索引返回整个字符串

使用http://fusejs.io/

在几乎所有情况下,我发现返回的 ' 索引几乎包含整个字符串。

举一个非常简单的例子,如果你去 fusejs.io,将第一个对象(在左侧的“步骤 1”中)更改为

然后勾选“包含匹配项”(在中间的“步骤 2”中)

生成的指数与大多数强指数相匹配,包括明显偏离的部分:

而我希望它只返回字符串的匹配部分,如下所示:

我已经在自己的应用程序中进行了尝试,并在大型数据集中看到了类似的结果。匹配本身非常准确 - 只是通过 matches[i].indices 突出显示是错误的。它似乎总是与匹配的字符串匹配,有时甚至远远超出。我要疯了吗?还是 fuse.js 无法做到这一点?

谢谢!

PS 有人可以让我知道我是否应该在这样的库问题中包含或不包含“javascript”标签吗?

0 投票
2 回答
5933 浏览

javascript - 如何设置 fuse.js 选项

我正在尝试fuse.js用于过滤。我不确定如何使用这些选项。如果我搜索,03我不会返回任何结果。我试过改变位置和阈值,但没有完全理解。我将 设置为minMatchCharLength查询字符串的长度,以防止查询01返回仅包含0. 那是对的吗?

0 投票
1 回答
2437 浏览

reactjs - 使用 TypeScript 反应和融合 js

将 Typescript 与 Fuse.js 一起使用时出现此错误消息

TS2345:类型参数'{键:字符串;}' 不能分配给 'FuseOptions<{ 'ISBN': string; 类型的参数 '标题':字符串;“作者”:字符串;}>'。属性“键”的类型不兼容。类型 'string' 不可分配给类型 '("title" | "ISBN" | "author")[] | {名称:“标题”| “国际标准书号” | “作者”; 重量:数量;}[]'。

这是代码:

错误是当将鼠标悬停在选项上时let fuse = new Fuse(books, options)

0 投票
1 回答
444 浏览

vue.js - 如何从 API 导入数据以用作 Vue 应用程序中的 Fuse 列表

我正在尝试使用 Fuse js 模糊搜索在 Vue js 中过滤搜索列表。当列表作为数据属性输入时,我可以让它工作,但当我通过 JSON api 获取它时不能。

我正在开发一个电子商务网站,并希望主页有一个产品列表,顶部有一个搜索输入字段。当搜索输入字段为空时,所有产品都应该可见。一旦用户开始输入,产品数组应该根据他们输入的内容进行过滤。

当我将产品数组手动添加到 Vue 实例的数据属性中时,它正在工作,但是当我尝试使用 axios 调用 JSON api 来获取数据时,我无法使用搜索功能。

我相当肯定这个问题与生命周期和异步函数有关,但是,尽管昨天阅读了这些,但我对这些更复杂的问题的理解很差。我尝试将 axios GET 抽象为一个方法,然后在mounted() 中调用它,将其作为计算属性拉入,并对家具进行各种其他重新排列,但我很难过。

这是一个代码笔,搜索作为实例上手动输入的数组工作。

如果有人可以通过 api 调用演示如何实现相同的结果,我将非常感激,因为我非常卡住,这让我发疯。随附的解释也将非常有价值。

0 投票
0 回答
877 浏览

javascript - 如何将 Fuse.js 导入为 ES6 模块客户端?

我在代码中使用 ES6 模块,但无法在客户端上导入 Fuse。在节点中,一切正常,但在浏览器中(Linux 上的 Firefox 开发者版 66.0b4),失败(代码在./js文件夹中):

错误是“语法错误:找不到导入:默认值”。这可以修复还是无法在浏览器中使用 Fuse 作为 ES6 模块?

我的 package.json 包含依赖项"fuse.js": "^3.3.0"。我目前不使用转译。

PS:它适用于转译的代码,但我在没有转译的情况下进行开发。