Sitecore 8 辅助II - 如何建立一个新的搜索索引 (How to add a cusomized search index)

本文档详细介绍了如何在Sitecore 8中创建一个针对Article页面类型的自定义搜索索引,包括使用Lucene作为引擎,定义特定Item类型的收集策略,以及添加Computed Index Fields以提高效率。步骤包括配置索引配置文件、编写自定义Crawler和Computed Index Field,最终在Sitecore的索引管理器中验证和应用新索引。
写在前面:

转载请注明出处

  • Sitecore的搜索和索引总结?
    Sitecore一共有三个搜索构架, 分别是Content Search, xConnectSearch和Commerce Search. Content Search顾名思义是用来搜索Sitecore内容的,一般公共或匿名用户会使用到这个搜索。xConnectSearch是用来搜索用户数据的譬如用户访问时使用的设备或访问地点等, 一般营销人员会使用这个搜索来策划更精确的营销方案。Commerce Search是用来搜索销售数据譬如用户下单了那些物品, 订单状态等。以下表格来源于Sitecore官方文档
Content SearchxConnect SearchCommerce Search
APIsSitecore Content Search APIxConnect Client APICommerce Search Service
ProvidersSolr
Azure Search
Solr
Azure Search
Solr
Azure Search
Indexessitecore_core_index
sitecore_master_index
sitecore_web_index
sitecore_marketingdefinitions_master
sitecore_marketingdefinitions_web
sitecore_marketing_asset_index_master
sitecore_marketing_asset_index_web
sitecore_testing_index
sitecore_suggested_test_index
sitecore_fxm_master_index
sitecore_fxm_web_index
xdb
xdb_rebuild
Customer Scope index
Order Scope index
Catalog Items Scope index
IndexerindexCrawler (run on the core Sitecore application)xConnect Search Indexer (run as Windows Service or Web Job)Commerce Minions
  • 为什么需要建立一个自定义的搜索索引 (search index)?
  1. 只加入自己想加入的Item类型,从而更快的返回结果或更快的整理索引(re-indexing)
  2. 可以加入自己想要的属性(field)
  3. 更好的控制何时更新索引
  • 什么是Computed Index Fields? 为什么我们需要Computed Index Fields?
    Computed Index Fields可以看做是一个索引 (index) 中每一个每一个item都具有的一个属性的值, 譬如被index收集的Items所在的根目录的ID, 或者Items的所有可用的语言版本(version)等。我们需要Computed Index Fields是因为通过这样的方式,我们可以直接在Index中加入一些我们想调用的属性, 这样就不需要搜索到该Item后再去访问数据库调取该Item的一些属性值了。
正文目录:
  1. 创建一个Lucene为引擎的Master数据库的收集Article页面类型的索引, 并创建自己的页面Crawler。强调一下, 如果希望创建Solr的Index, 需要不同方法,此处创建的是Lucene作为引擎的并且只收集Master数据库的搜索索引。
  2. 为我们创建的搜索索引添加一个Computed Index Field来记录此Item的GUID形式的Site ID

正文:

  1. Sitecore安装时自带一个自定义的Article模板, 我们将以其为此次新建的Index的唯一收集的模板类型。我们将先在Visual Studio项目中加入一个文件夹专门用来存放自定义的搜索索引。
    1). 首先在项目中, “/App_Config/Include/” 目录下创建新建文件夹取名为"zzz.CustomIndexes", 在此文件夹下创建一个Config文件并取名为"SR.ContentSearch.Lucene.ArticleIndex.Master.config".
    2). 在此Config文件中加入以下代码:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration xmls:patch="http://www.sitecore.net/xmlconfig/">
     <sitecore>
      <contentSearch>
    	<configuration type="Sitecore.ContentSearch.ContentSearchConfiguration, Sitecore.ContentSearch">
       		  <indexes hint="list:AddIndex">
       		    <!--此处为在Sitecore CMS中的index的名称-->
          		<index id="sr_article_master_index" type="Sitecore.ContentSearch.LuceneProvider.LuceneIndex, Sitecore.ContentSearch.LuceneProvider">
             	  <param desc="name">$(id)</param>
            	  <param desc="core">$(id)</param>
            	  <param desc="propertyStore" ref="contentSearch/indexConfigurations/databasePropertyStore" param1="$(id)" />
            	  <configuration ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration">
              		<fields hint="raw:AddComputedIndexField">
              		    <!--此处为新创建的自定义的Computed Index Field, 我们将在第2步添加此Field-->
                		<field fieldName="siteguid" storageType="YES" indexType="TOKENIZED">Sitecore8Review.Webforms.CustomComputedFields.SiteGUID, Sitecore8Review.Webforms</field>
             	 	</fields>
             	 <include hint="list:IncludeTemplate">
             	    <!--此处为希望加入的模板(tempalte)的ID, 此处用的是Sitecore安装时自带的Article模板的ID-->
                	<Article>{0B3BB88D-A3E5-42EA-9F4F-5FA20A3AD818}</Article>
              	</include>
           	 </configuration>
           	 <strategies hint="list:AddStrategy">
              <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/onPublishEndAsync" />
            </strategies>
            <locations hint="list:AddCrawler">
              <!--此处为自定义的Crawler名称和Assemly名称, 我们将在下一步添加自定义的Crawler-->
              <content type="Sitecore8Review.Webforms.CustomCrawlers.PageCrawlers, Sitecore8Review.Webforms">
                <!--收集Items的数据库, 此处为master数据库-->
                <Database>master</Database>
                <!--此处为Crawler开始收集的根目录的路径-->
                <Root>/sitecore/Content/SitecoreReview</Root>
              </content>
            </locations>
            <enableItemLanguageFallback>false</enableItemLanguageFallback>
            <enableFieldLanguageFallback>false</enableFieldLanguageFallback>
            </index>
       	   </indexes>
      	  </configuration>
    	</contentSearch>
      </sitecore>
    </configuration>
    

3). 在商业逻辑层的项目中添加一个新的文件夹取名为"CustomCrawlers", 在此文件夹中添加一个新的类文件, 取名为"PageCrawlers.cs", 在此类文件中加入如下代码:
在这里插入图片描述
4). 保存并发布此项目到Sitecore目录下, 查看Sitecore CMS的Control Panel下的indexing manager,确认此Index已经被加入Index的列表中:
在这里插入图片描述
2. 为新创建的搜索索引添加一个自定义的Computed Index Field
1). 在项目的商业逻辑层添加一个新的文件夹, 取名为"CustomComputedFields", 在此文件夹中添加一个新的类文件, 取名为"SiteGUID.cs". 在此类文件中加入如下代码
在这里插入图片描述
2). 保存并发布这个项目到Sitecore网站目录下, 访问Sitecore CMS中的indexing manager, 重新创建"sr_article_master_index"确保没有任何错误:
在这里插入图片描述

恭喜完成了创建一个自定义的搜索索引(search index) 并为其添加一个自定义的Computed Index Field的任务!可以开始使用这个自定义的搜索索引为网站加速!

AI-PPT 一键生成 PPT:用户输入主题关键词,AI-PPT 可快速生成完整 PPT,涵盖标题、正文、段落结构等,还支持对话式生成,用户可在 AI 交互窗口边查看边修改。 文档导入转 PPT:支持导入 Word、Excel、PDF 等多种格式文档,自动解析文档结构,将其转换为结构清晰、排版规范的 PPT,有保持原文和智能优化两种模式。 AI-PPT 对话 实时问答:用户上传 PPT 或 PPTX 文件后,可针对演示内容进行提问,AI 实时提供解答,帮助用户快速理解内容。 多角度内容分析:对 PPT 内容进行多角度分析,提供全面视野,帮助用户更好地把握内容结构和重点。 多语言对话支持:支持多语言对话,打破语言障碍,方便不同语言背景的用户使用。 AI - 绘图 文生图:用户输入文字描述,即可生成符合语义的不同风格图像,如油画、水彩、中国画等,支持中英文双语输入。 图生图:用户上传图片并输入描述,AI - 绘图能够根据参考图和描述生成新的风格化图像,适用于需要特定风格或元素的创作需求。 图像编辑:提供如 AI 超清、AI 扩图、AI 无痕消除等功能,用户可以上传图片进行细节修改和优化,提升图片质量。 AI - 文稿 文案生成:能够根据用户需求生成多种类型的文章,如市场营销文案、技术文档、内部沟通内容等,提升文案质量和创作效率。 文章润色:对已有文章进行改善和优化,包括语言表达、逻辑连贯性、内容流畅度等方面,使文章更符合用户期望和风格。 文章续写:AI 技术理解文本语境,为用户提供新的想法、补充资料或更深层次的见解,帮助用户丰富文档内容。 AI - 医生 智能健康咨询:包括症状自查,用户输入不适症状,AI 结合病史等信息提供疾病可能性分析与初步建议;用药指导,支持查询药品适应症、禁忌症等,并预警潜在冲突;中医辨证,提供体质辨识与调理建议。 医学报告解读:用户上传体检报告
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值