Вопрос по – Я хочу использовать несколько источников данных в DataImporthandler в Solr и передать значение URL в дочерней сущности после запроса базы данных в родительской сущности

4

Я хочу использовать несколько источников данных в DataImporthandler в Solr и передать значение URL в дочернем объекте после запроса базы данных в родительском объекте. Вот мой файл rss-data-config:

<dataConfig>
    <dataSource type="JdbcDataSource" name="ds-db" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/HCDACoreDB" 
                            user="root" password="[email protected]"/>
    <dataSource type="URLDataSource" name="ds-url"/>
    <document>
        <entity name="feeds" query="select f.feedurl, f.feedsource, c.categoryname from feeds f, category c where f.feedcategory = c.categoryid">

        <field column="feedurl" name="url" dataSource="ds-db"/>
        <field column="categoryname" name="category" dataSource="ds-db"/>

        <field column="feedsource" name="source" dataSource="ds-db"/>

        <entity name="rss"
                transformer="HTMLStripTransformer" 
                forEach="/RDF/channel | /RDF/item" 
                processor="XPathEntityProcessor" 
                url="${dataimporter.functions.encodeUrl(feeds.feedurl)}" > 

            <field column="source-link" dataSource="ds-url" xpath="/rss/channel/link" commonField="true" />
            <field column="Source-desc" dataSource="ds-url" xpath="/rss/channel/description" commonField="true" />
            <field column="title" dataSource="ds-url" xpath="/rss/channel/item/title" />
            <field column="link" dataSource="ds-url" xpath="/rss/channel/item/link" />
            <field column="description" dataSource="ds-url" xpath="/rss/channel/item/description" stripHTML="true"/>
            <field column="pubDate" dataSource="ds-url" xpath="/rss/channel/item/pubDate" />
            <field column="guid" dataSource="ds-url" xpath="/rss/channel/item/guid" />
            <field column="content" dataSource="ds-url" xpath="/rss/channel/item/content" />
            <field column="author" dataSource="ds-url" xpath="/rss/channel/item/creator" />
        </entity>

    </entity>
</document>

Что я делаю, так это в первой сущности с именем feeds. Я запрашиваю базу данных и хочу использовать feedurl в качестве URL для имен дочерних сущностей rss.

Ошибка, которую я получаю при запуске dataimport: java.net.MalformedURLException: нет протокола: nullselect f.feedurl, f.feedsource, c.categoryname из каналов f, категория c, где f .feedcategory = c.categoryid

URL us NULL означает, что он не назначает feedurl для URL.

Любое предложение о том, что я делаю не так?

Я решил эту проблему, добавив свойство dataSource в тег имени объекта. Jayku
Опубликуйте свое решение в качестве ответа и примите его. beerbajay

Ваш Ответ

1   ответ
5

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource name="db1" ... />
    <dataSource name="db2"... />
    <document>
        <entity name="outer" dataSource="db1" query=" ... ">
            <field column="id" />
            <entity name="inner" dataSource="db2" query=" select from ... where id = ${outer.id} ">
                <field column="innercolumn" splitBy=":::" />
            </entity>
        </entity>
    </document>

идея состоит в том, чтобы иметь одно определение вложенной сущности, которое выполняет дополнительный запрос к другой базе данных.

вы можете получить доступ к полям родительского объекта, как это${outer.id}

Похожие вопросы