2016-03-25 4 views
0

例:ソートされません。それは、このフィールドでソートしようとすると:Apache Solrでは、txt_generalフィールドタイプを使用して日付の時刻形式を格納しています。しかし、私は

timestmp_t:「2016年2月11日午前12時00分00秒」(txt_general用_t)
私は並べ替えしようこのフィールドは、ASCまたはDESCの順序で、私はソートされた結果を得ることはありません。

誰かが私が間違っているところに助けてくれますか?

答えて

1

あなたはtxt_genralを使用しています。これは、標準のトークナイザまたはキーワードトークナイザを使用していると仮定しています。このトークナイザは、日付用ではなくテキスト用です。
ここで私は直接的な方法とコピーフィールドを使う方法の2つを使います。
1)直接法
ここでは、直接それが再びインデックスしている私は1つのメソッドを使用することをお勧めします)

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

<field name="timestamp_t" type="tdate"/> 

2にコピーフィールド法

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

<field name="copy_timestamp_t" type="tdate"/> 

<copyField source="copy_timestamp_t" dest="timestamp_t" maxChars="30000" /> 

を日付フィールドの種類を指定することができます。

+0

はい、私は知っていますが、それらがテキストだけのものであっても、通常のテキストを扱うことによって数字を並べ替えてはいけませんか? –

+0

そして、私は自分のコレクションのschema.xmlをsolrで作成していません。ダイナミックフィールドを使用することをお勧めします。そして私はZ、Tを含んでいるタイムスタンプフォーマットを使いたくないので、私はtxt_generalとして使っていました。 –

+2

テキストフィールドを使用している場合、フィールドはトークン化されます。索引の根底にある情報は、あなたが入れているものではないので、ソートすると変わってしまいます。 "2016-02-11 12:00:00"はトークナイザに応じて、 "2016"、 "02"、 "11"、 "12"、 "00"、 "00"に分割されます。これらの値でソートしようとすると、すべてが崩れます。トークン化されていない文字列フィールド(StrField)または適切な日付フィールドを使用します。 – MatsLindh

関連する問題