2010-12-02 24 views
2

J'essaie de développer un composant WebPart SharePoint 2010 personnalisé pour la recherche rapide. J'utilise Microsoft.Office.Server.Search.Query.KeywordQuery quelque chose comme ceci:Générer par programme le code HTML pour HitHighlightedSummary à l'aide de KeywordQuery dans la recherche rapide pour SharePoint 2010

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(); 

je vais à lier searchResults[ResultType.RelevantResults] à un contrôle Repeater. J'essaie de faire apparaître le "résumé en surbrillance" en appelant le FASTquery.HighlightStringValue(). La valeur que je passe est la HitHighlightedSummary de searchResults. Un exemple de ce que cela ressemble à un résultat lors de la recherche pour « l'oreille » est la suivante:

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

Cependant, lorsqu'elle est appelée avec une chaîne comme celui-ci, FASTquery.HighlightStringValue() jette un System.ServiceModel.FaultException avec le message « La valeur ne tombe pas dans le gamme attendue. "

Quelle est la bonne façon de convertir cet extrait en HTML, ou devrais-je appeler HighlightStringValue() avec une autre valeur? La documentation n'est pas particulièrement utile.

+0

S'il vous plaît partager le code pour votre appel à FASTquery.HighlightStringValue() –

Répondre

5

J'effectue généralement une conversion manuelle du balisage de résumé surligné en HTML. Vous trouverez une combinaison de deux marqueurs dans le résumé:

  • <c0> </c0 > (Highlight)
  • < ddd/> (Ellipse)

Une transformation manuelle du balisage pourrait être aussi simple que le remplacement de la chaîne suivante:

string hitHighilghtedSummary; 
// ... 

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