所以我有一个规范化的表,其中包含一些我想放入 Solr 索引的数据,类似于这个
+----+--------------+--------------+---------+
| id | name | attribute | value |
+----+--------------+--------------+---------+
| 1 | Apple | color | green |
| 1 | Apple | shape | round |
| 1 | Apple | origin | Belgium |
| 2 | Motorbike | type | fast |
| 2 | Motorbike | nr of wheels | 2 |
| 3 | Office chair | color | grayish |
| 3 | Office chair | spins | yes |
+----+--------------+--------------+---------+
现在,我希望将其作为每个唯一 ID(即项目)的一个文档进行索引。但随后我将不得不将 n 个属性合并到一个文档中。为此,我需要对我的 dataConfig 做一些魔术。但是如何存储和映射 n 个字段?现在是使用动态字段的正确时机吗?
这是我目前的尝试。我很确定它是无效的。
<dataConfig>
<dataSource
type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/mystuff"
user="root" password="*****"/>
<document name="doc">
<entity name="t1" query="select * from item_to_id_table">
<field name="id" column="id"/>
<field name="name" column="name"/>
<entity name="t2" query="select * from my_flat_table"
cacheKey="t1.id"
cacheLookup="t2.id">
<!-- alt 1 -->
<field name="$(t2.attribute)" column="value" />
<!-- alt 2 -->
<entity name="properties" query="select property, value from t2"
cacheKey="$(t2.attribute)"
cacheLookup="property">
<field name="$(properties.property)" column="value" />
</entity>
</entity>
</entity>
</document>
</dataConfig>
我很确定这两种选择都不是有效的,除非我能找到更好的方法,否则我会尽快尝试。也许将脚本转换作为第三种选择。
这个用例与 Solr 一起使用是否合理?