2011-08-04 77 views
3

我正在使用Solr在我的數據庫上進行搜索,並且我需要從mysql數據庫中獲取(日期時間)數據類型的字段,所以我設置了select查詢以在dataconfig.xml中獲取此字段,我在schema.xml中添加字段名該字段如下:solr模式中的datetime字段

<field name="parsed_at" type="datetime" indexed="true" stored="true" />

但Solr的這些修改後沒有做任何索引。 我試圖

 
select date(parsed_at) as parsed_at ... 

,並指定類型日期schema.xml中,但這並沒有對不明原因
不Solr的支持與MySQL中DATATIME或時間戳兼容任何數據類型的工作?

回答

6

Solr的是在MySQL表的典型MySQL的日期格式兼容,如YMD(等) 如果在MySQL parsed_at列是從datetime類型,所以你並不需要在特定時間進行任何修改,只要您字段名稱(solr)= cloumn名稱(MySQL)。

因此請嘗試select parsed_at from ...。 Solr的將處理日期

<field name="parsed_at" type="datetime" indexed="true" stored="true" /> 

可以斷定,一個字段類型(類型=)datetime在Solr的schema.xml中退出。如果是這樣,請在這裏發佈配置。如果沒有,檢查,下面一行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" /> 
+0

我已經使用tdate如你所說,它沒有工作:(<海峽NAME =「總進賬行」> 17792 <海峽NAME =「加工總文檔」> 0 我如何檢查什麼出錯了嗎?有沒有辦法啓用錯誤日誌來顯示這樣的錯誤? – Ruba

+0

編輯你的問題,並添加:用於數據導入處理程序的SQL字符串和來自schema.xml的字段定義 –

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在URL後面。這可以防止空日期的錯誤。