你好我已经在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();
}
答案 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 ...
}
}
}