【发布时间】:2017-10-05 00:28:19
【问题描述】:
我们的应用管理用户拥有的书籍,其中包含多个文档(pdf、word 文档等)。主页列出了用户的所有书籍,并带有一个用于加载接下来 10 本书的分页按钮。然后,当用户点击一本书时,它会在新屏幕中打开并列出该书的所有文档。
到目前为止,我们使用 WCF / 实体框架来检索主页上显示的所有书籍,然后使用 azure search(连接到 sql 视图)在打开一本书时获取它的文档,这与分页配合得很好和排序。
现在虽然我们还想从 azure 搜索中获取用户的所有书籍列表,所以我们创建了一个新表来保存书籍和文档数据,每个文档一行表示父书籍名称和书籍 ID 重复每一行。
我们的 azure 搜索索引现在指向此表,我必须弄清楚如何通过分页和可能的排序为用户检索书籍。 问题是我需要对书籍进行不同的选择,但 azure search 并没有区别,而且我不知道一本书可能有多少文档,所以我不能将 Top 参数设置为 10。一本书可能有30 或 40 个文档,这意味着例如前 40 行可能只是一本书。
我尝试在书籍 id 上使用一个方面,哪种工作有效,并为我提供每本书的 id 和文档数量,但我似乎无法为方面指定排序顺序 - 顺序与我为查询设置的顺序(BookId)。我也不知道如何使用构面获取所有书籍 - 我可以在构面上设置计数属性,但我不知道用户将拥有多少本书。
我们的架构师说我应该获取所有行(可能是数千行)并在 C# 代码中过滤它们以获得 10 本书。不过,这对我来说似乎效率很低,而且感觉不对。
所以我不确定这是否是正确的方法..
- 我是否应该为书籍和文档数据设置单独的 Azure 搜索索引(使用单独的表格?
- 如何在不知道每本书有多少文档的情况下返回此表中前 n 本书?
- 我可以使用 C# sdk 指定构面的排序顺序吗? (我认为可以通过其他 API 实现)
- 如何获得一个方面来为用户归还所有书籍?
【问题讨论】:
标签: sql-server azure-cognitive-search