【问题标题】:Add text to the start of a SOLR database value将文本添加到 SOLR 数据库值的开头
【发布时间】:2012-12-05 12:04:31
【问题描述】:

我正在将此代码用于我的 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)

【问题讨论】:

    标签: sql database solr field


    【解决方案1】:

    您可以尝试将 SQL Query 修改为 -

    选择“表 1”|| ID AS PRIMARY_ID ........

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

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

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

    【讨论】:

    • 我需要 SQL 数据库中的 ID 与 SOLR 数据库中的 ID 进行核对。通过在 SOLR 值的开头放置一个已知值,我将知道 SOLR ID 是“app”+“SQLID”。尽管您的回答很好,但我不会在 SQL 方面记录 SOLRID。
    • SQL 端不需要 Solr ID 的任何记录。即使您正在使用 Delta 导入执行增量更新,更新的 SQL ID 仍会生成与上述查询相同的 Solr ID 并将被更新。
    • 如果数据库 A 有一个 ID=123 的项目,而数据库 B 也有一个 ID = 123 的项目,我把它们都放到 SOLR 中,那么会发生什么,不会有两个 ID 相同的记录?
    • 但是当您索引该数据时,您不会将 db1 和 db2 标识符应用于这两个 id 以使 id 仍然是唯一的吗?
    • 是的,但我不知道该怎么做,我是否应该有一个包含 ID 和标识符的 SQL 字段以及一个只是 ID 的字段?
    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 2015-07-29
    • 2016-06-11
    • 2014-05-26
    相关资源
    最近更新 更多