2011-06-07 56 views
0

我正在尝试使用.NET实现solr查询,但由于我的日期格式错误,我尝试连接到solr进行搜索,所以我收到了错误的请求。可以任何一个人告诉我确切的语法来创建.NET查询中的Solr日期格式问题

Created_Dt日期格式:[2008/12/12 3:45 PM TO *]

回答

1

我可以使用下面的代码获得Solr的日期格式,

DateTimeFieldSerializer date = new DateTimeFieldSerializer(); 

string fromDt = date.SerializeDate(searchCriteria.From); 

string toDt = date.SerializeDate(searchCriteria.To); 

这工作正常,我可以使用日期范围现在搜索..

+0

但是日期格式呢?你的意思是说我们必须以字符串格式存储日期。 – 2012-08-01 13:14:12

1

您需要根据UTC timestmap进行搜索。下面是一些例子.NET代码生成它:

DateTime dt = DateTime.Now.ToUniversalTime(); 
System.Diagnostics.Debug.WriteLine(dt.ToString("yyyy-MM-ddTHH:mm:ssZ")); 

和使用范例现场查询,将使用该格式:

Created_Dt:[2011-06-07T13:35:47Z TO NOW] 

此外,请确保您的日期转换为UTC format before you store them

5

SolrNet已经不转换为你Solr的时间格式,你只需要与标准DateTime类型的工作:

new SolrQueryByRange<DateTime?>("Created_Dt", new DateTime(2008, 12, 12, 15, 45, 0), null); 
+0

我不能够以这种方式查询日期,请你让我知道任何替代方式,因为我不使用solrQu eryByRange选项 – Selwyn 2011-06-08 11:47:14

+0

@Selwyn:您问题中的示例是范围查询。你不使用SolrNet吗?你不需要范围查询吗?为什么你不能以这种方式查询日期?请更具体一些。 – 2011-06-08 12:15:42

+0

我正在构建查询字符串通过将其附加到字符串生成器手动构建,所以我完全不知道在哪里需要插入上面的代码line.and还绑定日期。 – Selwyn 2011-06-08 13:25:16