【问题标题】:KQL Search in Timer Job, quote error计时器作业中的 KQL 搜索,报价错误
【发布时间】:2016-04-27 12:19:04
【问题描述】:

我正在处理一个计时器作业,它必须搜索具有指定属性值的所有 SharePoint 内容。如果此属性包含引号,则请求失败,否则没有此字符,一切都按预期工作。我试图用反引号 (`) 替换引号,但这仅适用于应用程序控制台。

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
   }
}

【问题讨论】:

  • 请给我们看一些代码。
  • 我在描述中添加了它;)

标签: c# search sharepoint quote


【解决方案1】:

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

在我的控制台中,Culture 是法语,Timer Job 是英语。这解释了为什么行为不同。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 2022-12-07
    • 2012-03-09
    • 2014-03-18
    • 1970-01-01
    相关资源
    最近更新 更多