搜索Algolia的相关指数

时间:2017-01-31 11:02:40

标签: search indexing structure relationship algolia

我试图找出是否有高效的方法来搜索我当前的数据结构,或者我是否需要对其进行重组。

我的索引有以下结构:

  • 发布(属性:idtitlekeywords
  • PublicationFile(属性:idpublication_idtextpage_number

发布包含许多发布文件,发布文件包含文件的内容以及在(textpage_number)中找到的页面。

titlekeywordstext是可搜索的属性,因此如果有人搜索“经济”字样。我想搜索我的两个索引。

我想执行搜索,搜索两个索引并以允许我执行以下操作的方式返回结果:

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

所以我希望搜索能够返回按发布ID分组的结果。我现在能想到的唯一方法是搜索两个索引,然后遍历结果并将文件/页面匹配链接到出版物。

总之,我的问题是:

  1. 有没有办法构建我的数据以避免嵌套循环来处理它?<​​/ li>
  2. 有没有办法通过Algolia可以做到这一点,而无需修改我的结构?理想情况下,我希望重新使用Algolia的前端搜索代码,并避免在我的后端处理此数据。

1 个答案:

答案 0 :(得分:2)

回答你的问题:

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/

希望这有帮助!

马克西姆