Solr和nullable数据库提供了更多面向对象的结果

时间:2013-07-15 09:47:30

标签: database solr dataimporthandler solr4

让我们假设我有这样的配置:

数据导入处理程序-config.xml中

<dataConfig>
    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1/solr" user="root" password="" batchSize="-1" />
    <document>
        <entity name="Book" query="select id, title from Book;">
            <field column="title" name="title" />
            <entity name="Author" query="select name, alias from Author where id='${Book.id}'">
                <field name="name" column="name" />
                <field name="alias" column="alias" />
            </entity>
        </entity>
    </document>
</dataConfig>

schema.xml中

<fields>
    <field name="_version_" type="string" indexed="true" stored="true" multiValued="false" />
    <!-- general -->
    <field name="title" type="text_en" indexed="true" stored="true" multiValued="false" />
    <field name="name" type="text_en" indexed="true" stored="true" multiValued="true" />
    <field name="alias" type="boolean" indexed="true" stored="true" multiValued="true" />
</fields>

我从Solr得到的结果(xml格式)如下所示:

<doc>
    <str name="title">Book with good title</str>
    <arr name="name">
        <str>John Doe 1</str>
        <str>John Doe 2</str>
        <str>John Doe 3</str>
    </arr>
    <arr name="alias">
        <bool>false</str>
        <bool>false</str>
        <bool>True</str>
    </arr>
</doc>

只要数据库中的所有文件都不是NULL ,就没有任何问题。

当一些别名设置为NULL时,我得到了例如:

<doc>
    <str name="title">Book with good title</str>
    <arr name="name">
        <str>John Doe 1</str>
        <str>John Doe 2</str>
        <str>John Doe 3</str>
    </arr>
    <arr name="alias">
        <bool>True</str>
    </arr>
</doc>

但是我不知道哪个作者被设置为null的别名。

1)是否可以在数据库中保留NULL并将数据导入Solr而没有问题?

我认为以更加“面向对象”的格式获取数据要简单得多,如下所示:

<doc>
    <str name="title">Book with good title</str>
    <authors>
        <author>
            <str name="name">John Doe 1</str>
            <bool name="alias">false</bool>
        </author>
        <author>
            <str name="name">John Doe 2</str>
            <bool name="alias">false</bool>
        </author>
        <author>
            <str name="name">John Doe 3</str>
            <bool name="alias">True</bool>
        </author>
    <authors>
</doc>

2)使用自定义Solr Field可以实现“面向对象”的风格吗?

0 个答案:

没有答案