gpt4 book ai didi

azure - Sitecore 8.1 : Steps for converting the Lucene Search to Solr

转载 作者:行者123 更新时间:2023-12-03 00:43:37 25 4
gpt4 key购买 nike

我们刚刚将 7.2 升级到 8.1,它使用 lucene 搜索提供程序。该网站严重依赖 lucene 来搜索和索引文章,以便可以以列表的形式显示。

我们已经有了一个 SOLR 实例设置。我们需要将 Lucene 转换为 SOLR。如果我得到以下指示,我将不胜感激:

  1. 我们如何将自定义计算的 lucene 索引和字段转换为 Solr?

  2. 除了CORES和端点的配置之外,还有哪些代码改动等需要注意的地方?

  3. 索引重建事件在 SOLR 方面如何工作。它们(CD)是否都尝试构建一次或按顺序构建,还是只有一个触发构建。

更新:

我切换到SOLR。我可以重建所有核心并且 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;
}

最佳答案

  1. 计算字段的实际代码可能不会改变。您需要对此进行测试以确保这一点,但由于 Sitecore 抽象了 Lucene 和 SOLR 代码,因此只要您只是使用 Sitecore API,它就应该可以工作。您将需要更改配置。在 Lucene 索引中,您可以在 defaultLuceneIndexConfiguration 部分添加计算字段。这需要更改为 defaultSolrIndexConfiguration

  2. 再说一遍,只要您只使用 Sitecore API,而不是直接使用 Lucene.net 或 Solr.net - 大多数代码都应该可以正常工作。我发现了一些问题。

    • Lucene区分大小写,SOLR区分大小写。因此,一些在 Lucene 上可能运行良好的查询,可能由于区分大小写而不再运行。
    • 请注意未设置 .Take() 限制的查询。 Sitecore 确实为查询返回的最大行数设置了默认值,但在 SOLR 上,由于网络往返,这对查询时间的影响比 Lucene 更大。
    • SOLR 需要考虑的另一件事是发生的搜索数量。使用 Lucene,对索引进行许多小调用几乎没有影响,因为它在本地和磁盘上的速度非常快。使用 SOLR,这些调用会转化为网络流量,因此对索引的大量微调用可能会对性能产生很大影响。
    • 正如 mikaelnet 提到的:SOLR 在索引中使用动态字段。因此每个字段都有一个基于字段类型的后缀。在大多数情况下这应该不是问题。 Sitecore API 会自动将后缀附加到您拥有的任何 IndexField 属性中。但有时,它可能会导致映射错误,您可能必须围绕它进行编码。
  3. 索引重建由您的配置设置。您可以设置一些索引更新策略:

    • 手动:仅手动更新索引。
    • sync:当修改、创建或删除项目时更新索引。这应该是内容创作服务器上主索引的默认设置。
    • onPublishEndAsync:这会在发布作业完成后更新索引。

在多服务器设置中,例如:1 个内容创作服务器和 2 个内容交付服务器。您应该设置内容创作服务器或专用索引服务器来执行索引更新。交付服务器应将所有索引的更新策略设置为手动。这会阻止每台服务器多次构建索引。

有一些关于使用 Sitecore 设置 SOLR 的好文章。以供引用:* http://www.sequence.co.uk/blog/sitecore-8-and-solr/

这应该会让您了解差异。

关于azure - Sitecore 8.1 : Steps for converting the Lucene Search to Solr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com