在 Solr 中表示和查询多对一关系的规范方式
Canonical way to represent and query many to one relationships in Solr
我在后端有 PostgreSQL 和 Solr 运行,在前端使用 EmberJS 和 ember-data。
在 PostgreSQL 中,我有一个多对一的关系,其中一篇文章可以有多个视频链接。 Ember-数据要求返回格式为:
{
articles: {
//Some number of articles
},
videos: {
//Videos that belong to those articles
}
}
现在我打算做的是从数据库导入 Solr 以允许搜索数据。这就是我开始困惑的地方。
我决定最好的方法是分别为视频和文章制作一个核心,然后分别导入两个核心。但是,我是 Solr 的新手,不确定拥有多个内核是否是处理多对一关系的规范方式。
此外,据我所知,查询时不能在两个核心上进行连接,这意味着要构造 ember 需要的 JSON 需要多个查询,这我觉得不对。
如何在 Solr 中正确表示多对一关系?
这取决于您要搜索的内容。但是,当将数据从关系数据库导入到像 Solr 这样的 document-based 存储时,最规范的方法是将数据非规范化或扁平化为单个文档 collection。在这种情况下,假设您要搜索文章(例如文章标题),您会希望有一个 collection,其中的文档看起来像这样
{
article_title: "<title_string>",
article_link: "<article_link1>",
videos: ["<video_link1>","<video_link2>",...]
}
我在后端有 PostgreSQL 和 Solr 运行,在前端使用 EmberJS 和 ember-data。
在 PostgreSQL 中,我有一个多对一的关系,其中一篇文章可以有多个视频链接。 Ember-数据要求返回格式为:
{
articles: {
//Some number of articles
},
videos: {
//Videos that belong to those articles
}
}
现在我打算做的是从数据库导入 Solr 以允许搜索数据。这就是我开始困惑的地方。
我决定最好的方法是分别为视频和文章制作一个核心,然后分别导入两个核心。但是,我是 Solr 的新手,不确定拥有多个内核是否是处理多对一关系的规范方式。
此外,据我所知,查询时不能在两个核心上进行连接,这意味着要构造 ember 需要的 JSON 需要多个查询,这我觉得不对。
如何在 Solr 中正确表示多对一关系?
这取决于您要搜索的内容。但是,当将数据从关系数据库导入到像 Solr 这样的 document-based 存储时,最规范的方法是将数据非规范化或扁平化为单个文档 collection。在这种情况下,假设您要搜索文章(例如文章标题),您会希望有一个 collection,其中的文档看起来像这样
{
article_title: "<title_string>",
article_link: "<article_link1>",
videos: ["<video_link1>","<video_link2>",...]
}