我希望有人能帮助我尝试使用MySQL后端压缩Solr的某些表。
这是ERD:ERD for products
我有一个链接到内容表的产品表和一个覆盖内容的market_content表。文本内容意义上的内容。 product表通过“content.id”的外键引用内容表,“content.default_content”字段显示与“content.id”相关的内容。表market_content可以覆盖内容。如果'market_content.id'字段中有相应的ID与'content.id'中的记录匹配,那么我希望它从'market_content.content'字段获取内容,而不是使用'content.default_content'。
来自'content.default_content'或'market_content.content'的内容是“洗发水”,“带护发素的洗发水”等文字。
我无法在返回Solr的结果时尝试使结构如下所示,并确保如果market_content表中的id对应于内容表中的id,则Solr返回覆盖market_content表'market.content.content'字段中的内容。
我希望结果的结构如下:
ProductId:1
Market:
GB:
Content_id_description: shampoo
US:
Content_id_description: shampoo
EU:
Content_id_description: Shampoo with conditioner
ProductId:2
Market:
GB:
Content_id_description: shampoo
US:
Content_id_description: shampoo
EU:
Content_id_description: shampoo
产品1;市场;欧洲联盟; Content_id_description(来自内容表的内容):被覆盖为“洗发水和护发素”。
无论如何都要让Solr在这个结构中输出,我将如何展平上面显示的ERD,以便在Solr上获得最佳的优化搜索?
由于
答案 0 :(得分:0)
根据我的拙见,您不需要两个表格来满足内容。您可以按照以下 link简化ERD。在此,您可以拥有一个默认市场,其默认代码可用于没有市场相关描述的产品。
product
id code
--- -----
1 a13d4
2 b453d
market
id code
--- -----
0 default
1 EU
2 GB
3 USA
market_product_details
product_id market_id description
---------- --------- -----------
1 0 Shampoo
1 1 Shampoo
1 2 Shampoo
1 3 Shampoo with Conditioner
2 0 Perfume
因此,在market_id 0之上是产品的默认名称。
至于相关的查询,由于表结构被简化,您可以查询solr,如下所示:
select mp.product_id, mp.market_id, ma.code, mp.description from market_product_details mp, market ma where mp.market_id=ma.market
答案 1 :(得分:0)
最后,我决定创建一个单独的表,模仿没有关系或规范化的平面表结构,然后在每次插入规范化表后,我将触发一个事件来填充这个平面表结构化表。然后我做的是配置Solr使用这个平面表结构进行搜索