DeltaImport默认情况下不会发生

时间:2014-09-02 07:11:11

标签: sql sql-server solr lucene

我遇到了deltaquery的问题,因为它并没有自动运行。下面是我的数据配置

        <dataConfig>
        <dataSource type="JdbcDataSource"
       driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
       url="jdbc:sqlserver://WTL-sql-1.com;databaseName=eng_metrics"
       user="metrics"
       password="metrics"/>

        <document name="content">
            <entity name="id"
    query="select defect_id,headline,description,modify_date,issue_type,category,product,state FROM defects WHERE state not like 'Duplicate'"
    deltaImportQuery="select defect_id,headline,description,modify_date,issue_type,category,product,state FROM defects WHERE defect_id = '${dataimporter.delta.defect_id}' and state not like 'Duplicate'"
    deltaQuery="select defect_id FROM defects WHERE modify_date > '${dataimporter.last_index_time}'">

                <field column="defect_id" name="defect_id" />
                <field column="headline" name="headline" />
                <field column="description" name="description" />
                <field column="modify_date" name="modify_date" />            
                <field column="issue_type" name="issue_type" />
                <field column="category" name="category" />
                <field column="product" name="product" />
                <field column="state" name="state" />
            </entity>
        </document>
    </dataConfig>

但是我看到,无论数据库中的modify_date发生了什么变化,我都看不到任何更新,除非我尝试明确地进行delta导入。

有人可以提供一些关于我是否需要更改某些配置或某些查询以使其自动生成的想法吗?

2 个答案:

答案 0 :(得分:0)

实际上,DataImportHandler不会自动执行此操作。你必须通过调用delta import的url来触发它。

你可能想要这样的东西:

http://wiki.apache.org/solr/DataImportHandler#Scheduling

或者你可以自己实施类似的。

答案 1 :(得分:0)

但是我的数据配置在某些情况下运行良好

    <dataConfig> 
        <dataSource type="JdbcDataSource"
       driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
       url="jdbc:sqlserver://127.0.0.1\SQLEXPRESS;databaseName=sustaining_trends"
       user="sa"
       password="metrics"/>

        <document name="content">
            <entity name="id"
    query="select id,createtime,lastmodified,modifiedby,title,keywords,general,symptom,diagnosis,resolution FROM trends"
    deltaImportQuery="select id,createtime,lastmodified,modifiedby,title,keywords,general,symptom,diagnosis,resolution FROM trends WHERE id = ${dataimporter.delta.id}"
    deltaQuery="select id FROM trends WHERE lastmodified > '${dataimporter.last_index_time}' or createtime > '${dataimporter.last_index_time}'">

                <field column="id" name="trendid" />
                <field column="lastmodified" name="lastmodified" />
                <field column="modifiedby" name="modifiedby" />
                <field column="title" name="title" />
                <field column="keywords" name="keywords" />
                <field column="general" name="general" />
                <field column="symptom" name="symptom" />
                <field column="diagnosis" name="diagnosis" />
                <field column="resolution" name="resolution" />
            </entity>
        </document>
    </dataConfig>

此处如果项目立即被修改而没有任何干扰,但是如果创建的新数据不会更新,直到我执行手动增量导入或者某些条目被修改。

这是如何自动进行修改而不能自动创建的?