我有一个使用FlexSearch的应用程序。在这个应用程序中,我有一个项目数组,看起来像这样:
let results = [
{ id:'a', name:'The title', status:'in-stock' },
{ id:'b', name:'Another title', status:'out-of-stock' },
{ id:'c', name:'Some other', status:'discontinued' },
];
const resultSchema = {
id: 'id',
field: [
'name',
'status'
]
};
const resultIndex = new FlexSearch({
profile:'score',
doc: resultSchema
});
resultIndex.add(results);我的页面具有状态(in-stock、out-of-stock和discontinued)复选框。我的问题是,我如何找到a)库存或b)脱销的结果。我没有看到一种使用where function执行逻辑或的方法。例如,我希望能够说,给我所有库存或脱销的结果。从逻辑的角度来看,人们可以说,给我所有不停产的东西。然而,这并不是我的整个数据集。出于这个原因,我正在尝试找出如何在Flexsearch中执行OR。
谢谢!
发布于 2021-04-04 19:29:28
请参阅自述文件中的Logical Operators一节。这似乎起作用了:
const res = resultIndex.search([
{ field: 'status', query: 'in-stock', bool: 'or' },
{ field: 'status', query: 'out-of-stock', bool: 'or' },
]);奇怪的是,当我尝试{ field: 'status', query: 'discontinued', bool: 'not' }时,它并不起作用。
发布于 2021-04-04 18:12:58
使用自定义函数不能解决您的问题吗?(在文档中找到)类似于:
resultIndex.where(function(item){
return item.status === "in-stock" || item.status === "out-of-stock";
});https://stackoverflow.com/questions/66876436
复制相似问题