首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Fuse.js依赖项测试函数

如何使用Fuse.js依赖项测试函数
EN

Stack Overflow用户
提问于 2021-03-15 23:32:43
回答 1查看 166关注 0票数 0

我想为下面的函数实现.test文件:

代码语言:javascript
复制
import Fuse from 'fuse.js';
import data from '../dal/data';
async function search(searchedData) {
  // In case searched name is null
  if (!searchedData) {
    return [];
  }

  // load data
  const dataload = await data();
  // set options to filter data
  const options = {
    includeMatches: true,
    // Search in `name'
    keys: ['name'],
  };
  const fuse = new Fuse(dataload, options);
  const matchedList = fuse.search(searchedData)
    .map((element) => element.item);

  return { matchedList };
}

export default search;

如何为Fuse.js做,我应该实现一个模拟数据吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-16 13:50:59

Fuse.js是基于传递给它的动态配置提供模糊搜索的库。有不同的库可用,例如fuzzy-search

现在,问题是如何根据评论将类似的库模拟为模糊搜索。This是一个很好的例子,告诉你如何开始构建自己的模糊搜索引擎,但要做到这一点,你需要了解什么是模糊搜索以及它是如何工作的。

现在,如果您想了解Fuse.js是如何处理模拟数据的。我可以添加一些代码,这可能会帮助您与现有的项目集成。

模拟数据

代码语言:javascript
复制
// it could be of any type, I am using Array of objects
const mockData = [{
                   name : 'Jason Durham',
                   age : 28,
                   address : 'Newyork city, New York, USA'
                   }, {
                   name : 'Jameson Durham',
                   age : 28,
                   address : 'Cleveland, Ohio, USA'
                   },
                   {
                   name : 'Tintan Groofs',
                   age : 28,
                   address : 'Ohio city, Ohio, USA'
                   }]
代码语言:javascript
复制
const options = {
  includeScore: true,    // the o/p will include the ranking based on weights
  keys: [
    {
      name: 'name',
      weight: 0.3        // what weightage you want this key in your search result
    },
    {
      name: 'address',
      weight: 0.7        // what weightage you want this key in your search result
    }
  ]
}

// Create a new instance of Fuse
const fuse = new Fuse(mockData, options)

// Now search for 'Man'
const result = fuse.search('nwyork');
console.log(result);

您可以查看fuse.js文档,了解如何进行搜索和配置。

如果您知道期望值,您可以使用测试框架测试模糊搜索结果,但根据您的配置,它将包含非常广泛的o/p集。到目前为止,Fuse.js在他们的文档中没有提供直接的方法来检查它,但是你可以根据你得到的排名创建一个方法,并为它创建一个阈值。这是我们使用Fuse.js测试搜索结果的方式,所有低于此阈值的结果都将被丢弃。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66640989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档