solr模式中的datetime字段

时间:2011-08-04 09:56:48

标签: mysql datetime solr

我正在使用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兼容的任何数据类型?

2 个答案:

答案 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置于网址后面。这可以防止空日期出错。