2011-08-04 8 views
3

Solrを使用してデータベースを検索していますが、mysqlデータベースの(datetime)データ型を持つフィールドを取得する必要があるため、dataconfig.xmlでこのフィールドを取得するselectクエリを設定します、と私は次のようにschema.xmlをして、このフィールドのフィールド名を追加しました:ソートスキーマのdatetimeフィールド

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

が、Solrには、これらの変更の後に任意のインデックス付けをしませんでした。 iは

 
select date(parsed_at) as parsed_at ... 

とのschema.xmlの日付などのタイプを指定するために試してみましたが、これはSolrのMySQLでdatatimeやタイムスタンプと互換性のある任意のデータ型をサポートしていない未知の理由
のために動作しませんでした?

答えて

6

SolrはYmd(など)のようなMySQLテーブルの標準的なMySql日付フォーマットと互換性があります MySQLのparsed_atカラムがタイプdatetimeの場合、選択時間に変更を加える必要はありませんフィールド名(solr)= cloumn名(MySQL)。

だから、select parsed_at from ...を試してください。 Solrには、

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

は必ず日付を処理することFIELDTYPE(タイプ=)Solrのschema.xmlを出るでdatetime。もしそうなら、ここに設定を投稿してください。 tdateは日付フォーマットを扱うことができ

<fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/> 

フィールドタイプ:いない場合は、次の行がschema.xmlに終了した場合、デフォルトである、確認してください。あなたはschema.xmlでこのフィールド定義を持っている場合は は、あなたのparsed_atフィールドは、そのタイプを使用することができます。

<field name="parsed_at" type="tdate" indexed="true" stored="true" /> 
+0

あなたが言ったように私はtdateを使用している、それは :(動作しませんでした17792 私が何であるかを確認することができますどのように0 間違っていますか?エラーログにエラーが表示されるようにする方法はありますか? – Ruba

+0

質問を編集して追加します。データインポートハンドラに使用するSQL文字列とschema.xmlのフィールド定義 –

1

あなたはDataImportHandlerを使用していますか?その場合、SOLRに日付の保存方法を伝える必要があります。私は、URLの後ろに?zeroDateTimeBehavior=convertToNullを突っ込ん

<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> 

注:あなたはこのDateFormatTransformer変圧器を使用してください。これにより、空の日付のエラーを防ぐことができます。

関連する問題