在 Algolia 上搜索相关索引

Searching through related indices on Algolia

我正在尝试找出是否有高效的方法来搜索我当前的数据结构,或者我是否必须重组它们。

我的索引结构如下:

一个出版物有很多出版物文件,出版物文件包含文件的内容和找到它的页面(textpage_number)。

titlekeywordstext 是可搜索的属性,因此如果有人搜索 'economy' 我想搜索我的两个索引。

我想执行一个搜索,通过索引和 returns 结果进行搜索,这样我就可以做这样的事情:

Publication1 keyword1 keyword2 Found results in Publication1's file contents in: [file a (pages: 1, 2, 3), file b (pages: 5)]

所以我有点希望 return 结果发生的搜索按出版物 ID 分组。我现在能想到的唯一方法是搜索两个索引,然后遍历结果,link file/page 与出版物匹配。

总而言之,我的问题是:

  1. 有没有一种方法可以构造我的数据以避免嵌套循环来处理它?
  2. 有没有一种方法可以通过 Algolia 完成此操作而无需修改我的结构?理想情况下,我想重新使用 Algolia 的前端搜索代码并避免 在我的后端处理这些数据。

回答您的问题:

1) 是的,我将在下面详细介绍

2) 不,不幸的是,你必须修改你的数据结构。


我建议您按照以下方式构建数据以实现您的目标。

{
  objectID: "publicationFieIdId",
  publicationId: '',
  title: '',
  keywords: ['', ''],
  text: "",
  page_number: 1,
  published_at: 1485892992 // timestamp
}

从本质上讲,您需要将 2 个索引扁平化为一个索引才能实现您想要做的事情。与维护客户端代码相比,修改数据结构在未来会更容易。而且表现也更好。

很少有文章或文档链接可用于解释原因:

https://blog.algolia.com/inside-the-engine-part-7-better-relevance-via-dedup-at-query-time/

https://www.algolia.com/doc/guides/search/distinct/

希望对您有所帮助!

马克西姆