如何在Sitecore中创建搜索功能 [英] how to create search function in sitecore

查看:22
本文介绍了如何在Sitecore中创建搜索功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试设置一个非常基本的搜索索引,以索引特定文件夹中的所有项目。但是我做不到。请检查我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sitecore.Data.Items;
using Sitecore.ContentSearch;
using Sitecore.Search;
using Sitecore.ContentSearch.SearchTypes;
using Sitecore.ContentSearch.Linq;
using Sitecore.Data;

protected void Page_Load(object sender, EventArgs e)
{
     var Index = ContentSearchManager.GetIndex("sitecore_web_index");

     using (var Context = Index.CreateSearchContext())
     {
           IQueryable<SearchResultItem> query = 
                       Context.GetQueryable<SearchResultItem>()
                       .Where(x => x.TemplateName.Contains("main"));

            SearchResults<SearchResultItem> results = query.GetResults();

            if (results.Hits.Any())
            {
                rpNewsListing.DataSource =
                      results.Hits.Select(hit => hit.Document.GetItem());

                rpNewsListing.DataBind();

                //rpNewsListing.DataSource = results.Hits.Select(x => x.Document);
                // Extract the Document for each hit - this is the NewsResult object

                //rpNewsListing.DataBind();
            }    
      }      
}

这样对吗?我只想创建一个简单索引,然后开始使用它。

推荐答案

我认为您正在使用语句TemplateName.Contains("main")尝试通过您提到的此特定文件夹进行过滤操作。

可以,您可以创建特定索引,该索引将仅索引给定文件夹中的项目。 最简单的方法是复制sitecore_web_index定义并创建您自己的定义,更改crawler中的root节点。

这样:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <contentSearch>
      <configuration type="Sitecore.ContentSearch.LuceneProvider.LuceneSearchConfiguration, Sitecore.ContentSearch.LuceneProvider">
        <indexes hint="list:AddIndex">

          <index id="sitecore_MYFOLDER_index" type="Sitecore.ContentSearch.LuceneProvider.LuceneIndex, Sitecore.ContentSearch.LuceneProvider">

            <param desc="name">$(id)</param>
            <param desc="folder">$(id)</param>
            <!-- This initializes index property store. Id has to be set to the index id -->
            <param desc="propertyStore" ref="contentSearch/databasePropertyStore" param1="$(id)" />
            <strategies hint="list:AddStrategy">
              <!-- NOTE: order of these is controls the execution order -->
              <strategy ref="contentSearch/indexUpdateStrategies/onPublishEndAsync" />
            </strategies>
            <commitPolicyExecutor type="Sitecore.ContentSearch.CommitPolicyExecutor, Sitecore.ContentSearch">
              <policies hint="list:AddCommitPolicy">
                <policy type="Sitecore.ContentSearch.TimeIntervalCommitPolicy, Sitecore.ContentSearch" />
              </policies>
            </commitPolicyExecutor>
            <locations hint="list:AddCrawler">
              <crawler type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">
                <Database>web</Database>

                <Root>/sitecore/MYFOLDER</Root>

              </crawler>
            </locations>
          </index>
        </indexes>
      </configuration>
    </contentSearch>
  </sitecore>
</configuration>

请注意,我仅将索引名称更改为*Sitecore_MYFOLDER_INDEX*,将根目录更改为/Sitecore/MYFOLDER

然后使用新索引定义创建内容搜索

var Index = ContentSearchManager.GetIndex("sitecore_MYFOLDER_index");

这篇关于如何在Sitecore中创建搜索功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆