Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 你的父母是谁?_C#_Umbraco7_Examine - Fatal编程技术网

C# 你的父母是谁?

C# 你的父母是谁?,c#,umbraco7,examine,C#,Umbraco7,Examine,我目前正在使用umbracoinspect来满足我的项目的所有搜索需求,并且我正在试图弄清楚查询参数“.ParentId”的确切作用 我希望我能用它从parentID中找到所有的子节点,但我似乎无法让它工作 基本上,如果searchstring包含例如“C#Programming”,那么它应该可以找到该类别的所有文章。这只是一个例子 提前谢谢你 当你说应该找到所有“该类别”的文章时,我想你的结构如下 -- Programming ----Begin Java Programming ----Ja

我目前正在使用umbracoinspect来满足我的项目的所有搜索需求,并且我正在试图弄清楚查询参数“.ParentId”的确切作用

我希望我能用它从parentID中找到所有的子节点,但我似乎无法让它工作

基本上,如果searchstring包含例如“C#Programming”,那么它应该可以找到该类别的所有文章。这只是一个例子


提前谢谢你

当你说应该找到所有“该类别”的文章时,我想你的结构如下

-- Programming
----Begin Java Programming
----Java Installation on Linux
----Basics of C# Programming
----What is SDLC
----Advanced C# Programming
-- Sports
----Baseball basics
如果是这样的话,那么我假设您希望列出“编程”下的所有文章,而不仅仅是那些包含“C#programming”的文章

您需要做的是循环查询的搜索结果并从中找到父节点

IPublishedContent node = new UmbracoHelper(UmbracoContext.Current).TypedContent(item.Fields["id"].ToString());
IPublishedContent parentNode = node.Parent;
一旦有了父节点,您就可以获得它的所有子节点以及其中的一些子节点,具体取决于文档类型和要执行的操作

IEnumerable<IPublishedContent> allChildren = parentNode.Children;
IEnumerable<IPublishedContent> specificChildren = parentNode.Children.Where(x => x.DocumentTypeAlias.Equals("aliasOfSomeDocType"));
IEnumerable allChildren=parentNode.Children;
IEnumerable specificChildren=parentNode.Children.Where(x=>x.DocumentTypeAlias.Equals(“某些doctype的别名”);
下面是示例代码

    //Fetching what eva searchterm some bloke is throwin' our way
    string q = Request.QueryString["search"].Trim();

    //Fetching our SearchProvider by giving it the name of our searchprovider
    Examine.Providers.BaseSearchProvider Searcher = Examine.ExamineManager.Instance.SearchProviderCollection["SiteSearchSearcher"];

    // control what fields are used for searching and the relevance
    var searchCriteria = Searcher.CreateSearchCriteria(Examine.SearchCriteria.BooleanOperation.Or);
    var query = searchCriteria.GroupedOr(new string[] { "nodeName", "introductionTitle", "paragraphOne", "leftContent", "..."}, q.Fuzzy()).Compile();        

    //Searching and ordering the result by score, and we only want to get the results that has a minimum of 0.05(scale is up to 1.)
    IEnumerable<SearchResult> searchResults = Searcher.Search(query).OrderByDescending(x => x.Score).TakeWhile(x => x.Score > 0.05f);  

    //Printing the results
    foreach (SearchResult item in searchResults)
    {
        //get the parent node
        IPublishedContent node = new UmbracoHelper(UmbracoContext.Current).TypedContent(item.Fields["id"].ToString());
        IPublishedContent parentNode = node.Parent;

        //if you wish to check for a particular document type you can include this
        if (item.Fields["nodeTypeAlias"] == "SubPage")
        {

        }
    }
//从我们的路上找到某个家伙想要的东西
字符串q=Request.QueryString[“search”].Trim();
//通过提供SearchProvider的名称获取SearchProvider
Examine.Providers.BaseSearchProvider Searcher=Examine.ExamineManager.Instance.SearchProviderCollection[“SiteSearcher”];
//控制用于搜索的字段及其相关性
var searchCriteria=Searcher.CreateSearchCriteria(检查.searchCriteria.BooleanOperation.Or);
var query=searchCriteria.GroupedOr(新字符串[]{“nodeName”、“introductionTitle”、“paragraphOne”、“leftContent”、“…”},q.Fuzzy()).Compile();
//按分数搜索和排序结果,我们只希望得到最小值为0.05的结果(分数最高为1)
IEnumerable searchResults=Searcher.Search(query).OrderByDescending(x=>x.Score).TakeWhile(x=>x.Score>0.05f);
//打印结果
foreach(搜索结果中的搜索结果项)
{
//获取父节点
IPPublishedContent节点=新的UmbracoHelper(UmbracoContext.Current).TypedContent(item.Fields[“id”].ToString());
IPPublishedContentParentNode=节点。父节点;
//如果您希望检查特定的文档类型,可以包括以下内容
如果(项字段[“节点类型”]=“子页面”)
{
}
}

你好,谢谢你回复我。这就是我最终的结果,但我将等待其他答案,因为我希望看到一个解决方案,它不需要我们在获取结果后过滤结果。如果我们可以只对需要的结果编制索引,而不是一次获取所有结果,然后再按父ID对它们进行过滤,那么效果会更好。我希望我说的有道理。再一次,谢谢!我认为父Id在索引属性FieldsYeah中暂时不可用,这就是为什么我在获取结果后过滤它们。它在这种情况下运行良好。谢谢你的帮助!很酷,希望它能很快被收录,然后过滤功能就会消失