我认为您可以采取两种方法。
一种是在检查索引中添加一个自定义字段,然后使用GatheringNodeData
事件,索引您要显示的文本。这样您就可以从 SearchResult 对象 ( @result.Fields["customFieldName"]
) 中访问它。事件GatheringNodeData
处理程序必须解析网格数据以提取所需的文本片段,然后将其添加到检查文档 ( e.Fields["content"] = textSnippet
)。
另一种方法是在显示结果时从节点获取文本片段。
var helper = new UmbracoHelper(UmbracoContext.Current);
foreach (var result in results)
{
var node = helper.TypedContent(result.Id);
var gridData = node.GetPropertyValue("contentgrid");
// some code for extracting the text snippet from the grid data
}
请注意,在这两种技术中,您需要弄清楚如何从网格数据中提取所需的文本片段。您可以使用 Skybrud.Umbraco.GridData 或自己解析 JSON(使用 JSON.NET)。我认为昨天在评论中提到的@Harvey帖子对此会有所帮助(以及有关处理GatheringNodeData
事件的更多详细信息)。