我想为下面的函数实现.test文件:
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做,我应该实现一个模拟数据吗?
发布于 2021-03-16 13:50:59
Fuse.js是基于传递给它的动态配置提供模糊搜索的库。有不同的库可用,例如fuzzy-search。
现在,问题是如何根据评论将类似的库模拟为模糊搜索。This是一个很好的例子,告诉你如何开始构建自己的模糊搜索引擎,但要做到这一点,你需要了解什么是模糊搜索以及它是如何工作的。
现在,如果您想了解Fuse.js是如何处理模拟数据的。我可以添加一些代码,这可能会帮助您与现有的项目集成。
模拟数据
// 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'
}]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测试搜索结果的方式,所有低于此阈值的结果都将被丢弃。
https://stackoverflow.com/questions/66640989
复制相似问题