0

我将此代码用于我的 SOLR DIH:

<dataConfig>
    <dataSource name="app" driver="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/wikipedia" user="wikipedia" password="secret" />
    <dataSource name="data" driver="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/wikipedia" user="wikipedia" password="secret" />
    <document> 
        <entity dataSource="app-ds" name="item" query="SELECT id, title, description, date, link, location_id, source_id, company_id from item"> 
            <field column="id" name="id" /> 
            <field column="title" name="title" /> 
            <field column="description" name="description" />   
            <field column="date" name="date" /> 
            <field column="link" name="link" />
        <entity dataSource="app-ds" name="location" query="SELECT name, coordinate from location where location_id=${item.location_id}"> 
            <field column="name" name="location_name" /> 
            <field column="coordinate" name="location_coordinates" /> 
                        </entity> 
        <entity dataSource="app-ds" name="source" query="SELECT name from source where source_id=${item.source_id}"> 
                <field column="name" name="source_name" /> 
                        </entity> 
                   <entity dataSource="app-ds" name="company" query="SELECT name from company where company_id=${item.company_id}"> 
                <field column="name" name="company_name" /> 
                </entity> 
        </entity> 
    </document> 
</dataConfig>

由于我正在合并两个数据库,因此我希望 SOLR 中的每个条目都有一个唯一 ID。在我的情况下,最好的方法是为第一个数据库 ID 设置 app* ID *,为第二个数据库 ID 设置 data* ID *。

使用我上面的代码,如何将单词“app”添加到存储在 SOLR ID 字段中的 ID 前面,以便我的数据库 ID=123 和 Solr ID = app123

编辑:我猜它可能是这样的(但我不擅长 SQL)

query="SELECT app_(id)
4

1 回答 1

1

您可以尝试将 SQL 查询修改为 -

选择“表 1”|| ID 作为 PRIMARY_ID ........

PRIMARY_ID 现在可以配置为 solr 中的唯一 ID。

<field column="primary_id" name="primary_id" />

即使您使用 Delta 导入执行增量更新,更新的 SQL ID 仍将生成与上述查询相同的 Solr ID 并将被更新。因此,请务必在 Delta 查询中也使用上述内容。

于 2012-12-05T12:19:13.023 回答