0

我希望有人可以帮助我尝试使用 MySQL 后端为 Solr 展平一些表。

这是 ERD:产品的 ERD

我有一个链接到内容表的产品表和一个用于覆盖内容的 market_content 表。文本内容意义上的内容。产品表通过“content.id”的外键引用内容表,“content.default_content”字段显示与“content.id”相关的内容。内容可以被表 market_content 覆盖。如果“market_content.id”字段中存在与“content.id”中的记录匹配的相应 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 上获得最佳优化搜索?

谢谢

4

2 回答 2

0

以我的拙见,您不需要两个表格来存储内容。您可以按照以下链接简化 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

于 2013-10-21T10:10:49.973 回答
0

最后,我决定创建一个单独的表来模拟没有关系或规范化的平面表结构,然后在每次插入规范化表之后,我会触发一个事件来填充这个平面表结构表。然后我所做的就是将 Solr 配置为使用这个平面表结构进行搜索

于 2014-05-02T08:40:52.493 回答