使用 Fuse.js 的一些心得
GOLB 的搜索页面使用 Fuse.js 作为“引擎”配合 JSON 数据进行搜索。然而 Fuse.js 似乎并非一个真正意义上的搜索引擎,就像它的名字那样,它更应该是一个模糊搜索引擎。在 Fuse.js 搜索一个字符串时,它还会同时搜索这个字符串的子集,比如在一些条件下搜索一个包含 26 个英文字母的句子,如“Sphinx of black quartz, judge my vow”,它可能搜索到全部一旦包含空格或者英文的数据(捂脸哭.gif)。
但是这是一个 Fuse.js 本身可以解决的问题,通过配置 threshold
为一个较小的值,如 0.0
,它将缩小搜索范围,找出比较精确的匹配项目,排除大部分冗余数据,但是在这个匹配项目中也会搜索模糊的子集,这是它的极限了(捂脸哭.gif),而且,这样它似乎只做了排除单个字符匹配的工作(应该并没有,它的算法令人捉摸不透)。
虽然存在这些问题,但实际这样使用却“有的放矢地”扩大了搜索范围,并不会造成数据的过分冗余,它仍然能满足用户的(几乎)所有搜索需求。
- Total words: 377 -
Read other posts