我试图找出是否有高效的方法来搜索我当前的数据结构,或者我是否需要对其进行重组。
我的索引有以下结构:
id
,title
,keywords
)id
,publication_id
,text
,page_number
)发布包含许多发布文件,发布文件包含文件的内容以及在(text
和page_number
)中找到的页面。
title
,keywords
和text
是可搜索的属性,因此如果有人搜索“经济”字样。我想搜索我的两个索引。
我想执行搜索,搜索两个索引并以允许我执行以下操作的方式返回结果:
Publication1
keyword1 keyword2
Found results in Publication1's file contents in: [file a (pages: 1, 2, 3), file b (pages: 5)]
所以我希望搜索能够返回按发布ID分组的结果。我现在能想到的唯一方法是搜索两个索引,然后遍历结果并将文件/页面匹配链接到出版物。
总之,我的问题是:
答案 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/
希望这有帮助!
马克西姆