【问题标题】:Umbraco: Get Grid content in search results?Umbraco:在搜索结果中获取网格内容?
【发布时间】:2017-11-29 03:34:09
【问题描述】:

我有一个像这样的简单检查搜索;

var results = Umbraco.Search(Request.QueryString["query"], true, "MySearcher");
foreach (var result in results)
{
<h2>@result.Name</h2>
<p>Content from 'contentgrid'?</p>
}

我的问题是,我如何从网格中获取文本的 sn-p? Propertynamecontentgrid。 查看索引,我可以看到有一个名为 contentgrid 的属性,其中包含文本、格式等内容。

【问题讨论】:

  • This post 看起来很有希望,因为它展示了如何在出现索引时将纯文本添加到检查索引中。

标签: c# asp.net razor umbraco examine


【解决方案1】:

我认为您可以采取两种方法。

一种是在检查索引中添加一个自定义字段,然后使用GatheringNodeData 事件,索引您要显示的文本。这样您就可以从 SearchResult 对象 (@result.Fields["customFieldName"]) 访问它。 GatheringNodeData 事件处理程序必须解析网格数据以提取所需的文本 sn-p,然后将其添加到检查文档 (e.Fields["content"] = textSnippet)。

另一种方法是在显示结果时从节点获取文本sn-p。

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
}

注意在这两种技术中,您需要弄清楚如何从网格数据中提取您想要的文本 sn-p。您可以使用 Skybrud.Umbraco.GridData 或自己解析 JSON(使用 JSON.NET)。我认为昨天在评论中提到的post@Harvey 会对此有所帮助(以及有关处理GatheringNodeData 事件的更多详细信息)。

【讨论】:

    【解决方案2】:

    您好,我写了一些代码让您可以在 umbraco 中进行更高级的搜索。

    本文为您提供了该代码。 http://www.codeshare.co.uk/blog/how-to-search-by-document-type-and-property-in-umbraco/

    我用它来搜索我的网站。 mismatched 一词仅出现在我网站的一篇文章的内容网格中。下面的搜索 url 证明它有效。

    http://www.codeshare.co.uk/search/?query=mismatched

    亲切的问候

    保罗

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      相关资源
      最近更新 更多