在 Algolia 上搜索相关索引
Searching through related indices on Algolia
我正在尝试找出是否有高效的方法来搜索我当前的数据结构,或者我是否必须重组它们。
我的索引结构如下:
- 出版物(属性:
id
、title
、keywords
)
- PublicationFile(属性:
id
、publication_id
、text
、page_number
)
一个出版物有很多出版物文件,出版物文件包含文件的内容和找到它的页面(text
和 page_number
)。
title
、keywords
和 text
是可搜索的属性,因此如果有人搜索 '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 与出版物匹配。
总而言之,我的问题是:
- 有没有一种方法可以构造我的数据以避免嵌套循环来处理它?
- 有没有一种方法可以通过 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/
希望对您有所帮助!
马克西姆
我正在尝试找出是否有高效的方法来搜索我当前的数据结构,或者我是否必须重组它们。
我的索引结构如下:
- 出版物(属性:
id
、title
、keywords
) - PublicationFile(属性:
id
、publication_id
、text
、page_number
)
一个出版物有很多出版物文件,出版物文件包含文件的内容和找到它的页面(text
和 page_number
)。
title
、keywords
和 text
是可搜索的属性,因此如果有人搜索 '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 与出版物匹配。
总而言之,我的问题是:
- 有没有一种方法可以构造我的数据以避免嵌套循环来处理它?
- 有没有一种方法可以通过 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/
希望对您有所帮助!
马克西姆