有人能指点我一些文档,分步说明如何在Sitecore 7.x
进行分面搜索吗?我已阅读官方Sitecore文档(开发人员项目桶和搜索指南)。
我发现该文件非常混乱。第2章是关于Item Buckets的。好吧,我不需要这个项目的项目桶。我没有那么多内容项。第3章称为“搜索”,但我认为它正在谈论在Sitecore界面中从内部搜索项目桶中的内容项。
这很有趣 - 但不是我需要的。第5章是关于使用Item Buckets进行开发。但是,当他们谈论在Sitecore界面内进行搜索以及他们谈论在您的网站中构建搜索时,我很不清楚。
我正在寻找的是如何设置索引和方面的明确的逐步说明,然后是如何执行分面搜索的特定代码示例。有谁知道这是否存在于网上任何地方?
答案 0 :(得分:0)
Sitecore开发团队为Sitecore 7的发布(其中引入了新的搜索功能)完成了一系列博客和Google Hangouts。您可以在此处访问:http://www.sitecore.net/Learn/Blogs/Technical-Blogs/Sitecore-7-Development-Team/Posts/2013/10/Facets-Explained.aspx
在设置索引方面,使用提供的配置文件,即Sitecore.ContentSearch.Lucene.Index.Web.config,并根据需要使用配置。默认情况下,您将设置三个索引(sitecore_content_web,sitecore_content_core和sitecore_content_master)。如果要自定义,则只需编辑当前配置。索引配置的Locations部分最相关,节点应该是自解释的,但主要是:
每个索引可以有很多抓取工具,但您可能不需要,我不会从那开始。
关于分面,这主要是由Linq扩展“FacetOn”驱动的。这可以应用于索引上的Linq查询:
using (IProviderSearchContext context = ContentSearchManager.GetIndex(Constants._webContentIndexName).CreateSearchContext())
{
var model = new SearchResultViewModel();
//Get all items in home ordered by content data
//Faceted on semantics so will work with tagging
IQueryable<CustomSearchResultItem> query = context.GetQueryable<CustomSearchResultItem>()
.Where(i => i.Path.StartsWith(Constants._startPath))
.Where(i => i.Content.Contains(searchTerm))
.Where(i => i.TemplateId != exclusionTemplate)
.FacetOn(i => i.Semantics);
//DO SOMETHING WITH RESULTS
}
只是为了澄清任何混淆,当文档引用项目桶等时,这与您执行搜索的方式没有什么不同。关于Sitecore的好处是,甚至GUI都是基于您用来开发解决方案的相同API构建的。因此,在Item Buckets周围开发内部搜索的地方,您可以在自己的搜索解决方案中使用这些示例。