我正在使用solr从我当地的MYSQL数据库中索引我的数据。
data-config.xml包含我的实体信息,如下所示:
<entity name="distinctWeeksVolumeEntity" dataSource="mysqlLocal" rootEntity="false" query="select week as distinctWeeksVolume, count(`distinct` tweetid) as weeklyTweetVolume from twitter.tweetbisect tb group by week" transformer="TemplateTransformer">
<field column="distinctWeeksVolume" template="distinctWeeksVolumeEntity" />
<field column="weeklyTweetVolume" template="distinctWeeksVolumeEntity" /> </entity>
schema.xml包含信息
<field name="distinctWeeksVolume" type="string" indexed="true" stored="true" />
<field name="weeklyTweetVolume" type="int" indexed="true" stored="true" />
当我进入solr admin的dataimport并执行import时,我收到以下消息
Indexing completed. Added/Updated: 0 documents. Deleted 0 documents.
Requests: 1, Fetched: 3, Skipped: 0
我使用完全导入并使用提交选项true
为什么我无法索引数据? 请帮助...
答案 0 :(得分:0)
IMO,在此用例中您不需要TemplateTransformer
。
您可以使用data-config看起来像
<entity name="distinctWeeksVolumeEntity" dataSource="mysqlLocal" rootEntity="false" query="select week as distinctWeeksVolume, count(`distinct` tweetid) as weeklyTweetVolume from twitter.tweetbisect tb group by week">
</entity>
由于您的select
查询获取的命名字段与Solr Schema完全相同,因此您甚至不需要在`entity。下指定field
。
但是,如果您必须使用TemplateTransformer
,请尝试以下操作:
<entity name="distinctWeeksVolumeEntity" dataSource="mysqlLocal" rootEntity="false" query="select week as distinctWeeksVolume, count(`distinct` tweetid) as weeklyTweetVolume from twitter.tweetbisect tb group by week" transformer="TemplateTransformer">
<field column="distinctWeeksVolume" template="${distinctWeeksVolumeEntity.distinctWeeksVolume}" />
<field column="weeklyTweetVolume" template="${distinctWeeksVolumeEntity.weeklyTweetVolume}" /> </entity>
这似乎效率很低,恕我直言。
详细了解TemplateTransformer
here