我正在构建一个搜索 API 来支持分面搜索界面。我的困惑源于还需要支持记录分页。最基本的是,我的 API 包括
- 资源:
资源
- 可搜索术语:术语数组:
terms[]
- 返回的数据:对象数组:
data[{}]
- 记录:每个字段作为键的对象
记录{}
- 记录数:
num
- 数据库中的偏移量:
页面
- 记录:每个字段作为键的对象
- 允许缩小返回数据范围的构面:记录
record{}
键的子集:facets[]
就其值(value)而言,我的后端是 SQLite 和 Nodejs。
我的问题是由于我仅返回 num
条记录作为 page
结果。鉴于在任何给定时间客户端中仅存在 num
条记录,分面将缩小结果仅包含该 num
条记录。但是,我想缩小整个结果集的结果范围。这意味着我必须发回每个方面点击的查询。每次单击某个构面时,我都必须重建原始查询,这次包括单击的累积构面,并将结果返回给客户端。我走在正确的轨道上吗?返回的最有效的数据集(结构和内容)是什么?
最佳答案
是的,您走在正确的道路上。除非将整个数据库/表发送到 UI,否则您无法仅在 UI 中实现搜索和筛选。
您需要从 UI 发送到后端的内容:
- 过滤字词(方面),以便您可以在查询中构建
AND
子句 - 页码和页面大小
- sort 子句 - 除非你只有一种方法来排序。但请确保您的查询已排序。
关于node.js - 构建支持分面和分页的搜索 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068995/