1

你好,我已经在 umbraco 中创建了索引来搜索 umbraco 中的任何关键字,我已经为其创建了一个用户控件并创建了一个搜索条件和过滤器,但它正在显示包含别名 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();

    }
4

1 回答 1

0

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

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

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 ...
    }
  }
} 
于 2012-11-29T09:03:10.790 回答