我正在构建一个搜索API来支持分面搜索界面。我的困惑源于还需要支持记录分页。最基本的,我的 API 包括
- 资源:
resource
可搜索字词: - 一组字词:
terms[]
- 返回的数据:对象数组:
data[{}]
- 记录:每个字段作为键
record{}
的对象 - 记录数:
num
- 数据库中的偏移量:
page
- 记录:每个字段作为键
- 允许缩小返回数据的方面:记录键的子集
record{}
:facets[]
对于它的价值,我的后端是SQLite和nodejs。
我的问题源于我只返回num
记录作为结果page
。鉴于在任何给定时间客户端中仅存在num
记录,分面将仅在该num
记录中缩小结果范围。但是,我想缩小整个结果集的结果范围。这意味着我必须为每个分面点击发回查询。每次单击分面时,我都必须重新生成原始查询,这次包括单击的累积分面,并将结果返回给客户端。我走在正确的轨道上吗?要返回的最有效数据集(结构和内容(是什么?
是的,你走在正确的轨道上。除非将整个数据库/表发送到 UI,否则无法仅在 UI 中实现该搜索和筛选。
您需要从 UI 发送到后端的内容:
- 筛选词(分面(,以便您可以在查询中构建
AND
子句 - 页码和页面大小
- 排序子句 - 除非你只有一种方法可以对事物进行排序。但请确保您的查询已排序。