我们刚刚将7.2升级到8.1,它使用了lucene搜索提供程序。该网站在很大程度上依赖于lucene搜索和索引文章,以便它可以显示为列表。
我们已经安装了SOLR实例。我们需要将这个Lucene转换为SOLR。如果我在下面得到指示,我将不胜感激:
我们如何将自定义计算的lucene索引和字段转换为Solr?
除了CORES和端点的配置外,是否有任何代码更改等我们需要注意?
索引重建事件如何在SOLR方面起作用。他们(CD)是否都尝试构建一次或按顺序构建或只构建一个触发器。
更新
我切换到SOLR。我可以重建所有CORES,web_index显示11K文档。但是该页面不会返回任何结果。下面是代码片段,如果我可以获得有关我做错的帮助,请欣赏。这对Lucene来说很好:
public IEnumerable<Article> GetArticles(Sitecore.Data.ID categoryId)
{
List<Article> articles = null;
var home = _sitecoreService.GetItem<Sitecore.Data.Items.Item>(System.Guid.Parse(ItemIds.PageIds.Home));
var index = ContentSearchManager.GetIndex(new SitecoreIndexableItem(home));
using (var context = index.CreateSearchContext(SearchSecurityOptions.DisableSecurityCheck))
{
var query = context.GetQueryable<ArticleSearchResultItem>().Filter(item => item.Category == categoryId);
var results = query.GetResults();
articles = new List<Article>();
foreach (var hit in results.Hits)
{
var article = _sitecoreService.GetItem<Article>(new Sitecore.Data.ID(hit.Document.Id).ToGuid());
if (article != null)
{
if (article.ArticlePage != null && !article.ArticlePage.HideInNavigation)
{
articles.Add(article);
}
}
}
}
return articles;
}
答案 0 :(得分:4)
计算字段的实际代码可能不会更改。您需要对此进行测试以确保,但由于Sitecore抽象出Lucene和SOLR代码,只要您只是使用Sitecore API就可以使用它。
您需要更改配置。在Lucene索引中,您可以在defaultLuceneIndexConfiguration
部分中添加计算字段。这需要更改为defaultSolrIndexConfiguration
同样,只要您使用Sitecore API并且不直接使用Lucene.net或Solr.net - 大多数代码都可以正常工作。我发现了一些问题。
.Take()
限制的查询。 Sitecore确实为查询返回的最大行有一个默认值,但在SOLR上,由于网络往返,对查询时间的影响要大于对Lucene的影响。 IndexField
属性中。但有时,它可能会导致映射错误,您可能需要编写代码。索引重建由您的配置设置。您可以设置一些索引更新策略:
在多服务器设置中,例如:1个内容创作服务器和2个内容传送服务器。您应该设置内容创作服务器或专用索引服务器来执行索引更新。传递服务器应将所有索引的更新策略设置为手动。这会停止每个服务器多次构建索引。
有一些关于使用Sitecore设置SOLR的好文章。以供参考: * http://www.sequence.co.uk/blog/sitecore-8-and-solr/
这应该让你了解差异。