在FAST搜索SharePoint 2010中使用KeywordQuery以编程方式为HitHighlightedSummary生成HTML

时间:2010-12-02 15:18:25

标签: sharepoint sharepoint-2010 fastsearch keywordquery

我正在尝试为FAST搜索开发自定义的SharePoint 2010 Web部件。我正在使用Microsoft.Office.Server.Search.Query.KeywordQuery这样的东西:

var FASTquery = new KeywordQuery(proxy)
{
    ResultsProvider = SearchProvider.FASTSearch,
    QueryText = queryText,
    ResultTypes = ResultType.RelevantResults | ResultType.RefinementResults
};
FASTquery.SelectProperties.AddRange(
    new string[] { "Title", /* ..., */ "HitHighlightedSummary" });
ResultTableCollection searchResults = FASTquery.Execute();

我继续将searchResults[ResultType.RelevantResults]绑定到Repeater控件。我正在尝试通过调用FASTquery.HighlightStringValue()来显示“点击突出显示的摘要”。我传递的值是来自HitHighlightedSummary的{​​{1}}。搜索“ear”时搜索结果的示例如下:

searchResults

但是,当使用这样的字符串调用时,<ddd/>FALSE ); GetDlgItem(IDC_<c0>EAR</c0>_PAIN_STATIC)-&gt;EnableWindow<ddd/>FALSE ); GetDlgIte(IDC_<c0>EAR</c0>_PAIN_ABSENT_RADIO<ddd/>FALSE ); GetDlgItem(IDC_<c0>EAR</c0>_PAIN_MILD_RADIO<ddd/> 会抛出FASTquery.HighlightStringValue(),并显示消息“值不在预期范围内。”

将此摘录转换为HTML的正确方法是什么,或者我应该使用其他值调用System.ServiceModel.FaultException?文档不是特别有用。

1 个答案:

答案 0 :(得分:6)

我通常会将突出显示的摘要标记手动转换为HTML。您将在摘要中找到两个标记的组合:

  • &LT; C0&GT; &LT; / C0&GT; (精彩场面)
  • &LT; DDD /&GT; (省略号)

标记的手动转换可以像下面的字符串替换一样简单:

string hitHighilghtedSummary;
// ...

hitHighlightedSummary = hitHighlightedSummary.Replace("c0", "strong").Replace("<ddd/>", "&#8230;");