Umbraco 从搜索结果中省略媒体文件

Umbraco Omitting Media files from search results

正如我的标题所暗示的,我希望我的搜索代码忽略我的媒体文件夹中的任何内容。现在,如果我搜索 "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>

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

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

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