构建支持分面和分页的搜索 API



我正在构建一个搜索API来支持分面搜索界面。我的困惑源于还需要支持记录分页。最基本的,我的 API 包括

  • 资源:resource
  • 可搜索字词:
  • 一组字词:terms[]
  • 返回的数据:对象数组:data[{}]
    • 记录:每个字段作为键record{}
    • 的对象
    • 记录数:num
    • 数据库中的偏移量:page
  • 允许缩小返回数据的方面:记录键的子集record{}facets[]

对于它的价值,我的后端是SQLite和nodejs。

我的问题源于我只返回num记录作为结果page。鉴于在任何给定时间客户端中仅存在num记录,分面将仅在该num记录中缩小结果范围。但是,我想缩小整个结果集的结果范围。这意味着我必须为每个分面点击发回查询。每次单击分面时,我都必须重新生成原始查询,这次包括单击的累积分面,并将结果返回给客户端。我走在正确的轨道上吗?要返回的最有效数据集(结构和内容(是什么?

是的,你走在正确的轨道上。除非将整个数据库/表发送到 UI,否则无法仅在 UI 中实现该搜索和筛选。

您需要从 UI 发送到后端的内容:

  • 筛选词(分面(,以便您可以在查询中构建AND子句
  • 页码页面大小
  • 排序子句 - 除非你只有一种方法可以对事物进行排序。但请确保您的查询已排序。

最新更新