使用 KeywordQuery 在搜索结果中返回错误的 DateTime
Returning wrong DateTime in search results by using KeywordQuery
我有一个大问题。我在服务器端代码中使用 KeywordQuery 来 return 多个列表中具有相同 contenttypeid 的项目。我在那些列表中有一些日期时间列。当我 return 来自 keywordwquery 搜索的值时,我得到
3/2/2017 11:00:00 PM
但我在列表项中将 3/3/2017 保存为日期!这里有什么问题?为什么我总是从搜索数据库收到日期 - 1 小时,我如何在我的服务器端代码中更正它?
这是我的代码:
SearchServiceApplicationProxy proxy = (SearchServiceApplicationProxy)SearchServiceApplicationProxy.GetProxy(SPServiceContext.GetContext(querySite));
using (KeywordQuery keywordQuery = new KeywordQuery(proxy))
{
try
{
keywordQuery.ResultsProvider = SearchProvider.Default;
keywordQuery.StartRow = 0;
keywordQuery.RowLimit = 9999;
keywordQuery.EnableStemming = false;
keywordQuery.TrimDuplicates = false;
keywordQuery.AuthenticationType = QueryAuthenticationType.PluggableAuthenticatedQuery;
keywordQuery.KeywordInclusion = KeywordInclusion.AllKeywords;
keywordQuery.QueryText = "contentclass:\"STS_ListItem_Task\" NOT ContentTypeId:\"0x010800C140B62AF5566C4CBFC76C53B8D4DA94\"";
keywordQuery.SelectProperties.Add("Author");
keywordQuery.SelectProperties.Add("AssignedTo");
keywordQuery.SelectProperties.Add("DueDate");
keywordQuery.SelectProperties.Add("StartDate");
keywordQuery.SelectProperties.Add("path");
keywordQuery.SelectProperties.Add("title");
SearchExecutor executor = new SearchExecutor();
ResultTableCollection resultTableCollection = executor.ExecuteQuery(keywordQuery);
var resultTables = resultTableCollection.Filter("TableType", KnownTableTypes.RelevantResults);
ResultTable resultTable = resultTableCollection.FirstOrDefault();
if (resultTable.Table.Rows.Count > 0)
{
...
}
}
catch (Exception ex)
{
}
}
我认为这是时区转换的问题。检查哪个时间是当地时间,哪个时间是 UTC。
我有一个大问题。我在服务器端代码中使用 KeywordQuery 来 return 多个列表中具有相同 contenttypeid 的项目。我在那些列表中有一些日期时间列。当我 return 来自 keywordwquery 搜索的值时,我得到
3/2/2017 11:00:00 PM
但我在列表项中将 3/3/2017 保存为日期!这里有什么问题?为什么我总是从搜索数据库收到日期 - 1 小时,我如何在我的服务器端代码中更正它?
这是我的代码:
SearchServiceApplicationProxy proxy = (SearchServiceApplicationProxy)SearchServiceApplicationProxy.GetProxy(SPServiceContext.GetContext(querySite));
using (KeywordQuery keywordQuery = new KeywordQuery(proxy))
{
try
{
keywordQuery.ResultsProvider = SearchProvider.Default;
keywordQuery.StartRow = 0;
keywordQuery.RowLimit = 9999;
keywordQuery.EnableStemming = false;
keywordQuery.TrimDuplicates = false;
keywordQuery.AuthenticationType = QueryAuthenticationType.PluggableAuthenticatedQuery;
keywordQuery.KeywordInclusion = KeywordInclusion.AllKeywords;
keywordQuery.QueryText = "contentclass:\"STS_ListItem_Task\" NOT ContentTypeId:\"0x010800C140B62AF5566C4CBFC76C53B8D4DA94\"";
keywordQuery.SelectProperties.Add("Author");
keywordQuery.SelectProperties.Add("AssignedTo");
keywordQuery.SelectProperties.Add("DueDate");
keywordQuery.SelectProperties.Add("StartDate");
keywordQuery.SelectProperties.Add("path");
keywordQuery.SelectProperties.Add("title");
SearchExecutor executor = new SearchExecutor();
ResultTableCollection resultTableCollection = executor.ExecuteQuery(keywordQuery);
var resultTables = resultTableCollection.Filter("TableType", KnownTableTypes.RelevantResults);
ResultTable resultTable = resultTableCollection.FirstOrDefault();
if (resultTable.Table.Rows.Count > 0)
{
...
}
}
catch (Exception ex)
{
}
}
我认为这是时区转换的问题。检查哪个时间是当地时间,哪个时间是 UTC。