使用 FlexSearch 查找属于集合的结果

Finding results that are part of a set with FlexSearch

我有一个使用 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-stockout-of-stockdiscontinued)。我的问题是,如何找到 a) 有货或 b) 缺货的结果。我没有看到用 where function 执行逻辑 OR 的方法。例如,我希望能够说,给我所有有货或缺货的结果。从逻辑的角度来看,可以说,给我所有未停产的东西。但是,这不是我的整个数据集。出于这个原因,我正在尝试弄清楚如何在 Flexsearch 中执行 OR。

谢谢!

使用自定义函数不能解决您的问题吗?(在文档中找到) 像这样:

resultIndex.where(function(item){
    return item.status === "in-stock" || item.status === "out-of-stock";
});

请参阅自述文件中的 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' }我试了之后没用。