node.js - 构建支持分面和分页的搜索 API

标签 node.js sqlite facet

我正在构建一个搜索 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/

相关文章:

c# - 我应该将什么传递给 SQLitePCL.raw.SetProvider() 以避免 "The type initializer for ' Microsoft.Data.Sqlite.SqliteConnection' 引发异常”

c# - MongoDb Driver 2.0 C# 过滤和聚合

javascript - 无法在 res.json 中获得响应

空列上的android sqlite索引

javascript - 如何让 NodeJs 函数等待?

c# - 如何使用C#将自定义对象保存到Windows Phone上的sqlite中?

python - Altair - 在多面图中绘制圆、椭圆、注释

r - ggplot2 中的分面

javascript - 无法发送异步 POST 请求

javascript - 如何获取启动文件中的客户端对象?