2017-05-31 24 views
2

iquery可能なクエリを使用してコースのリストを返そうとしていますが、日付の比較に問題があります。現在、将来の日付のコースを返すコードSitecoreの日付比較で期待される結果が返されない

query = query.Where(r => r.EndDate >= DateTime.UtcNow); 

を使用して

イムは、しかし、それはDateTime.UtcNowによって返された時間よりも後の終了時刻と同じ日に終了するコースを返しません。

私が間違っていることは何ですか?

アイブ氏はただのインデックスをチェックするためにルークを使用して、私は

end_date:[20170531t092205609z TO *] 

を使用する場合、私は実際のクエリは、私はそれから多くを得る

+end_date:[20170531t092205609z TO *] +_template:a84b75fccac64eafa746f4b71e628adc - Filter : 

を使用して、ログにしかし、私は必要な正確な結果を取り戻します私が見逃したコースを含めた結果を返します。

どう

a) i get more results back using the second query? 
b) Why is i that in my c# code the results returned do not match the search results? 
+0

あなたがインデックスに送信されたクエリが何であるかを検索ログファイルをチェックインすることはできますか? –

+0

@MarekMusielakこれは送信されました28688 10:22:05情報ExecuteQueryAgainstLucene(website_web_event_search_index):+ end_date:[20170531t092205609z TO *] + _template:a84b75fccac64eafa746f4b71e628adc - フィルタ: –

答えて

0

を来るには同様の問題を持っていたし、ここに当社のソリューションを説明した:https://ggullentops.blogspot.be/2015/12/sitecore-lucene-index-and-datetime.htmlを。第二の理由は、サイトコアは「t」を使用していることだった

  • 第一の理由は、サイトコアはUTCでのdatetimeオブジェクトを格納していることである(私たちの現地時間との時間差だった)
  • 私たちの問題は、2つの理由がありましたクエリの小文字の日付でしかし、私のインデックスではすべて大文字です。ルークでクエリを試してみると、間違った結果が出ます。Lukeのクエリを大文字のTを使用するように変更すると、正しく機能します。

最も簡単な解決策は、インデックスの設定:

<field fieldName="datefrom" storageType="YES" indexType="UNTOKENIZED" vectorType="NO" boost="1f" 
format="yyyyMMdd" type="System.DateTime" 
settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider"/> 

(=形式の点に注意してください。「...」)

+0

事は私が小文字のt –

関連する問題