KQL在计时器作业中搜索,引用错误

时间:2016-04-27 12:19:05

标签: c# search sharepoint quote

我正在开发一个Timer Job,它必须使用指定的属性值搜索所有SharePoint内容。如果此属性包含引号,则请求失败,否则没有此特性,everthing将按预期工作。我试图用反引号(`)替换引号,但这仅适用于应用程序控制台。

KQL查询示例:

ThematiqueEnrichment="Vie de l'administration" --> fail

ThematiqueEnrichment="toto" --> works

有人对这个问题有所了解吗?以及为什么反引用不仅仅适用于计时器作业

感谢您的帮助

KeywordQuery kq = new KeywordQuery(_site);
kq.QueryText = "ContentTypeId:0x01010006DC43FAAA7D45E8AF6C31AE603C9BA5006CFA76F0311643E58860A89C066A5C6F*) AND ThematiqueEnrichment=\"" + currentSource.DisplayName + "\" ";
kq.SelectProperties.Clear();
kq.SelectProperties.Add("PublishingPageContentOWSHTML");
kq.SelectProperties.Add("EMSTotemsDatePublicationOWSDATEFormat");
kq.SortList.Add("EMSTotemsDatePublicationOWSDATEFormat", SortDirection.Descending);
ResultTableCollection resultTableCollection = new SearchExecutor().ExecuteQuery(kq);
ResultTable resultTable = resultTableCollection.Filter("TableType", KnownTableTypes.RelevantResults).FirstOrDefault();
if (resultTable != null)
{
   foreach (DataRow row in resultTable.Table.Rows)
   { 
    // Manage items
   }
}

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我有一个带有法语语言包的英语SharePoint。  所以我需要用法语设置我的cultureInfo以允许Query管理报价。

在我的控制台中,文化用法语和英语定时器工作。这解释了为什么竞争不同。

KeywordQuery kq = new KeywordQuery(_site);
kq.QueryText = "ContentTypeId:0x01010006DC43FAAA7D45E8AF6C31AE603C9BA5006CFA76F0311643E58860A89C066A5C6F*) AND ThematiqueEnrichment=\"" + currentSource.DisplayName + "\" ";
kq.SelectProperties.Clear();
kq.Culture = new CultureInfo("fr-FR");