【问题标题】:Umbraco Omitting Media files from search resultsUmbraco 从搜索结果中省略媒体文件
【发布时间】:2015-02-25 22:32:19
【问题描述】:

正如我的标题所暗示的,我希望我的搜索代码忽略我的媒体文件夹中的任何内容。现在,如果我搜索“test”,它将带回任何带有 test 字样的页面以及任何带有 test 的文档或图像。

有没有办法可以修改我当前的搜索代码来做到这一点?

我的代码如下所示。请注意,我已经删除了我的分页代码,因为它不适用于我的问题:

@{
    Layout = "Master.cshtml";
    @*search variables*@
    var searchTerm = Request["term"];

    if (String.IsNullOrEmpty(searchTerm))
    {
        <p>Please use the search box</p>
        return;
    }


    @*the searcher instance to use - Umbraco has 3 by default - InternalSearcher, ExternalSearcher and InternalMemberSearcher *@
    var searcher = ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"];
    var searchCriteria = searcher.CreateSearchCriteria(BooleanOperation.Or);
    @* define node properties to be searched below *@
    var query = searchCriteria.GroupedOr(new string[] { "pageTitle", "metaDescription", "nodeName", "heading", "bodyText", "summary" }, searchTerm.Fuzzy(0.5f)).Compile();

    var searchResults = searcher.Search(query);
    var resultPage = searchResults.Skip(currentPage * itemsPerPage).Take(itemsPerPage);
    var noResults = searchResults.Count();
    var numberOfPages = Math.Ceiling((decimal)((noResults - 1) / itemsPerPage)) + 1;
    var pages = Enumerable.Range(1, (int)numberOfPages);
}

@Html.Partial("Breadcrumb")

<div class="container content">
    <h3>You searched for <b>@searchTerm</b>, we found @noResults results</h3>

    <ul class="row clearfix list-unstyled newslist">
        @foreach (var result in resultPage)
        {
            <li class="col-md-12 column">
                <div class="row clearfix">
                    <div class="col-md-12 column">

                        <h2>
                            @if (result.Fields.ContainsKey("pageTitle"))
                            {
                                <a href="@umbraco.library.NiceUrl(result.Id)">@result.Fields["pageTitle"]</a>
                            }
                            else
                            {
                                <a href="@umbraco.library.NiceUrl(result.Id)">@result.Fields["nodeName"]</a>
                            }

                        </h2>

                        @if (result.Fields.ContainsKey("metaDescription"))
                        {
                            <p>
                                @result.Fields["metaDescription"]
                            </p>
                        }

                        @if (result.Fields.ContainsKey("summary"))
                        {

                            <p>
                                @result.Fields["summary"]

                            </p>
                        }

                        @*@foreach(var fieldItem in result.Fields)
                            {
                                <p>@fieldItem.Key <b>: </b> @fieldItem.Value</p>
                            }*@

                        <p class="pull-left">
                        </p><div class="addthis_sharing_toolbox"></div>
                        <p></p>

                        <p class="pull-right">
                            <a class="btn btn-green" href="@umbraco.library.NiceUrl(result.Id)">View details »</a>
                        </p>
                    </div>
                </div>
            </li>
        }
    </ul>
</div>

【问题讨论】:

    标签: c# razor umbraco search-engine


    【解决方案1】:

    您只需在搜索条件中指定索引类型:

    var searchCriteria = searcher.CreateSearchCriteria(UmbracoExamine.IndexTypes.Content, BooleanOperation.Or);
    

    这会将搜索限制在您网站的“内容”部分中的项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多