Search Umbraco 7+搜索

Search Umbraco 7+搜索,search,razor,umbraco,examine,Search,Razor,Umbraco,Examine,我想知道是否有人能帮我。。。我正试图让检查搜索在Umbraco 7.3中工作,但我正在努力处理文档 当我查看以下文件examiseSettings.config和examiceIndex.config时,它们似乎已经指定了ExternalIndexer、ExternalSearcher和ExternalIndexSet。我猜这是4.11的一个增强,文档似乎是为它编写的 但这是我迷路的地方。。。剃须刀部分是局部视图吗?完整的代码需要是什么 我假设如果它是部分视图,我会创建一个包含部分视图@Htm

我想知道是否有人能帮我。。。我正试图让检查搜索在Umbraco 7.3中工作,但我正在努力处理文档

当我查看以下文件examiseSettings.config和examiceIndex.config时,它们似乎已经指定了ExternalIndexer、ExternalSearcher和ExternalIndexSet。我猜这是4.11的一个增强,文档似乎是为它编写的

但这是我迷路的地方。。。剃须刀部分是局部视图吗?完整的代码需要是什么

我假设如果它是部分视图,我会创建一个包含部分视图@Html.partialsearch的页面

如果我查看了页面并附加了一个查询字符串~/?query=关键字,这会起作用吗

任何帮助都会很好


提前感谢

我认为您可以从Umbraco内部创建一个局部视图宏,并选择一个可以使用的搜索片段。然后,可以在模板文件中执行@Html.RenderMacroalias。

在Config/ExamineIndex.Config中,创建一个新的索引集,其中包含希望用户能够搜索的所有属性

Umbraco.TypedSearchRequest.QueryString[query];将在整个页面中搜索任何内容,但如果设置正确,则可以选择希望人们能够搜索的文档类型,也可以选择希望人们能够根据哪些属性对内容进行索引

例如:

<IndexSet SetName="ExternalTopLevelSearchSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/{machinename}/TopLevelSearch/">
    <IndexAttributeFields>
      <add Name="Name"/>
      <add Name="bodyText"/>
      <add Name="tags"/>
      <add Name="themes"/>
      <add Name="parentID"/>
    </IndexAttributeFields>
    <IncludeNodeTypes>
      <add Name="ArticlePage" />
    </IncludeNodeTypes>
  </IndexSet>
然后必须在Config/examisesettings.Config中创建索引器

  <add name="ExternalTopLevelIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
        supportUnpublished="false"
        supportProtected="false"
        interval="10"
        analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"
        indexSet="ExternalTopLevelSearchSet"/>
<add name="ExternalTopLevelSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
           analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" indexSet="ExternalTopLevelSearchSet" enableLeadingWildcards="true"/>
现在,您也在Config/examisesettings.Config中创建了一个搜索提供程序

  <add name="ExternalTopLevelIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
        supportUnpublished="false"
        supportProtected="false"
        interval="10"
        analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"
        indexSet="ExternalTopLevelSearchSet"/>
<add name="ExternalTopLevelSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
           analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" indexSet="ExternalTopLevelSearchSet" enableLeadingWildcards="true"/>
这是我的C代码,使用上面显示的ExternalTopLevel搜索器

public List<SearchResult> SearchResults
        {
            get
            {
                if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["q"])) {
                    var searcher = ExamineManager.Instance.SearchProviderCollection["ExternalTopLevelSearcher"];
                    // Search criteria.
                    var searchCriteria = searcher.CreateSearchCriteria(BooleanOperation.Or);
                    var q = HttpContext.Current.Request.QueryString["q"].ToLower().Trim().Split(' ');
                    var contentType = HelperClass.GetContentTypeNodes().FirstOrDefault(item => q.Contains(item.Name.ToLower()));
                    q = q.Where(i => i.Length > 3).ToArray();
                    var query = searchCriteria
                        .GroupedOr(new[] { "nodeName" }, q.Select(x => x.Boost(150)).ToArray())
                        .Or()
                        .GroupedOr(new[] { "grid" }, q.Select(x => x.Boost(80)).ToArray())
                        .Or()
                        .GroupedOr(new[] { "tags", "themes", "institutions" }, q.Select(x => x.Boost(110)).ToArray());
                    // Search results
                    var searchResults = searcher.Search(query.Compile()).OrderByDescending(x => x.Score);
                    return searchResults.ToList();
                }
                return new List<SearchResult>();
            }
        }

希望这对你有帮助

您好-谢谢-局部视图和局部视图宏之间有什么区别?我已经找到了另一个教程,但它似乎工作不正常,但它让我更接近了。我认为没有什么不同。它们位于/Views/内的不同文件夹中,但最重要的是,部分视图宏文件可用于在Umbraco内创建实际的宏:-您在Razor中是否有此功能?恐怕没有,但代码类似。我把它放在Razor中,并重新编写以适应我使用的体系结构。@Mikkel,我对学习这种方法也是新手。如果您在本例中没有使用razor,您是否只是将其保存为类文件,然后将其编译到页面上?Thanks@blackhawk-是的,这是一种方法。上面的例子来自我不久前做的一个更大的Umbraco项目,其中SearchResults属性是ViewModel或模型的一部分