我正在使用Solr在我的数据库上进行搜索,我需要从mysql数据库中获取一个带有(datetime)数据类型的字段,所以我设置了select查询以在dataconfig.xml中获取此字段,并且我添加了字段schema.xml中此字段的名称如下:
<field name="parsed_at" type="datetime" indexed="true" stored="true" />
但是solr在这些修改后没有做任何索引。 我试过
select date(parsed_at) as parsed_at ...
并在schema.xml中指定类型作为日期,但由于未知原因,这不起作用 solr是否支持与mysql中的datatime或timestamp兼容的任何数据类型?
答案 0 :(得分:6)
Solr与MySQL表中的典型MySql日期格式兼容,如Y-m-d(依此类推)
如果MySQL中的parsed_at列来自类型datetime
,那么只要您的字段名称(solr)= cloumn name(MySQL),就不需要对选择时间进行任何修改。
所以试试select parsed_at from ...
。 Solr将处理日期
<field name="parsed_at" type="datetime" indexed="true" stored="true" />
确保Solr的schema.xml中的fieldType(type =)datetime
退出。如果是这样,请在此处发布配置。如果没有,请检查以下行是否在schema.xml
中退出,这是默认值:
<fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>
字段类型tdate
可以处理日期格式。
如果您在schema.xml
中有此字段定义,则您的parsed_at字段可以使用该类型:
<field name="parsed_at" type="tdate" indexed="true" stored="true" />
答案 1 :(得分:1)
您使用的是DataImportHandler吗?在这种情况下,您需要告诉SOLR如何存储日期。您可以使用DateFormatTransformer
转换器执行此操作:
<dataConfig>
<dataSource
type='JdbcDataSource'
driver='com.mysql.jdbc.Driver'
url='jdbc:mysql://localhost/DATABASE?zeroDateTimeBehavior=convertToNull'
batchSize='-1'
user='USER'
password='PASS'/>
<document name='objects'>
<entity name='object' pk='id' transformer='DateFormatTransformer' query='BLA' >
<field column='id' />
<field column='created' dateTimeFormat='yyyy-MM-dd HH:mm:ss' />
</entity>
</document>
</dataConfig>
请注意,我将?zeroDateTimeBehavior=convertToNull
置于网址后面。这可以防止空日期出错。