在master数据库中创建项目的新版本时,如果我们编辑项目并保存并发布它。项目将被发布,Web数据库包含最新的更新版本项目。但是在网站上看不到浏览项目 该项目可以看到一些$ name。 有时该项目不可见,有时使用$ name可见。 此外,当直接通过url项目浏览项目时,最新更新的内容是可见的,因此该项目已发布。它似乎与索引相关的一些问题。 但是当一个项目在没有创建新版本的情况下被直接编辑时,问题就不存在了。所以问题在于索引以及版本,因为我猜有多个最新版本的web索引,创造问题。 如何解决这个问题?作为一种解决方法,我必须从Web数据库中删除该项目,然后重新发布并重新生成索引以解决问题。
是否需要针对多个版本的项目自定义现有的索引和爬网程序策略?如果需要,哪些文件需要自定义或覆盖和更改?“ 以下是要显示的数据项的Web索引的代码段吗?
<!-- sitecore_web_content_mag_index -->
<indexes hint="list:AddIndex">
<index id="sitecore_web_content_mag_index" type="Sitecore.ContentSearch.LuceneProvider.SwitchOnRebuildLuceneIndex, Sitecore.ContentSearch.LuceneProvider">
<param desc="name">$(id)</param>
<param desc="folder">$(id)</param>
<param desc="propertyStore" ref="contentSearch/indexConfigurations/databasePropertyStore" param1="$(id)" />
<configuration ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration" />
<strategies hint="list:AddStrategy">
<strategy ref="contentSearch/indexConfigurations/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/content/Site/Home</Root>
</crawler>
</locations>
</index>
</indexes>
答案 0 :(得分:0)
使用ContentSearch API时,您可以通过执行以下操作来过滤结果以仅返回最新版本:
searchContext.GetQueryable<SearchResultItem>()
.Where(result => result["_latestversion"].Equals("1");
或者,如果您已经创建了自己的搜索结果模型,则可以向其添加属性以使查询语法更加简洁。
搜索结果模型:
public class CustomSearchResultItem : SearchResultItem
{
[IndexField("_latestversion")]
public bool IsLatestVersion { get; set; }
// other properties
}
查询
searchContext.GetQueryable<CustomSearchResultItem>()
.Where(result => result.IsLatestVersion);
另一种方法是使用本文所述的扩展方法:http://laubplusco.net/generic-extension-methods-sitecore-contentsearch/