如何在umbraco的所有节点和所有属性中搜索关键字

时间:2012-11-29 06:39:03

标签: asp.net umbraco

你好我已经在umbraco中创建索引来搜索umbraco中的任何关键字,我已经建立了一个用户控件并且修改了搜索条件和过滤器,但是它显示的是包含别名name bodyText的节点列表但是我想要列出所有不具有别名的主体名称为bodytext的节点,因为无法提供所有属性别名name bodytext所以我该怎么做才能搜索umbraco中的所有节点和所有属性

 protected void Page_Load(object sender, EventArgs e)
    {
       SearchTerm = Request.QueryString["s"];

        if (string.IsNullOrEmpty(SearchTerm)) return;

        var criteria = ExamineManager.Instance
                .SearchProviderCollection["DemoSearcher"]
                .CreateSearchCriteria(UmbracoExamine.IndexTypes.Content);

        var filter = criteria
        .GroupedOr(new string[] { "nodeName", "bodyText" }, SearchTerm)
        .Compile();



       SearchResults = ExamineManager.Instance.SearchProviderCollection["DemoSearcher"].Search(filter);

        SearchResultListing.DataSource = SearchResults;
        SearchResultListing.DataBind();

    }

1 个答案:

答案 0 :(得分:0)

是否要搜索每种类型的字段,因为搜索整数字段或guid甚至是多节点选择器的json或xml都不一定能得到你期望的结果。

您可以枚举每个节点的属性,然后如果属性属于您要搜索的类型(如文本框),则可以使用以下内容作为搜索不一定称为bodyText的文本框的基础: / p>

foreach(node in nodes)
{

  var props = node.PropertiesAsList;

  foreach (var prop in props)  
  {
    if (@prop.Value.GetType() == " ... type you want to search ... ")
    {
      var fieldValue = node.getProperty(@prop.Alias).Value;
      ... search fieldvalue ...
    }
  }
}