Программно сгенерировать HTML для HitHighlightedSummary с использованием KeywordQuery в FAST-поиске для SharePoint 2010 - PullRequest
2 голосов
/ 02 декабря 2010

Я пытаюсь разработать настраиваемую веб-часть SharePoint 2010 для поиска FAST. Я использую 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 из 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() выдает System.ServiceModel.FaultException с сообщением «Значение не попадает в ожидаемый диапазон».

Как правильно преобразовать этот отрывок в HTML, или я должен вызывать HighlightStringValue() с другим значением? Документация не особо полезна.

1 Ответ

6 голосов
/ 22 января 2013

Обычно я выполняю ручное преобразование выделенной краткой разметки в HTML.В сводке вы найдете комбинацию из двух маркеров:

  • (Выделить)
  • (Многоточие)

Ручное преобразование разметки может быть таким же простым, как следующая замена строки:

string hitHighilghtedSummary;
// ...

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