内容搜索,重建索引错误

时间:2014-05-08 05:19:27

标签: c# solr lucene sitecore sitecore7

我是Sitecore的新手,并且有一项任务是使用SiteCore 7 API构建搜索。在搜索结果查询执行时收到以下错误。

System.ArgumentNullException: Value cannot be null. Parameter name:
fieldNameTranslator

错误来自以下行

IQueryable<SearchResultItem> results = context.GetQueryable<SearchResultItem>();

堆栈说

Sitecore.ContentSearch.Linq.Solr.SolrIndexParameters..ctor(IIndexValueFormatter valueFormatter, IFieldQueryTranslatorMap`1 fieldQueryTranslators, FieldNameTranslator fieldNameTranslator, IExecutionContext[] executionContexts) +284

我已登录到内容管理系统,在索引管理器中我正在尝试重建sitecore_web_index的索引,但我收到以下错误

Job started: Index_Update_IndexName=sitecore_web_index|#Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Sitecore.Exceptions.ProviderConfigurationException: Solr operations unavailable. Please check your global.asax,

4 个答案:

答案 0 :(得分:5)

  • 检查您是否可以从托管Sitecore应用的计算机访问Solr。
  • 确保ContentSearch.Solr.ServiceBaseAddress设置指向正确的Solr资源
  • 如果您的解决方案使用IoC,请确保只为您的应用程序定义了一个IoC容器实例。如果需要,将容器初始化移至Application_Start方法。

答案 1 :(得分:0)

我也面临同样的问题,IOC也在application_start上配置,但我进一步深入研究了这个问题,发现 Sitecore.ContentSearch.ContentSearchManager 类击中了 Factory.CreateObject( &#34; contentSearch / configuration&#34;,true); 返回 Sitecore.ContentSearch.SolrProvider.SolrSearchConfiguration 对象的方法。但预期的对象是 ProviderIndexSearchConfiguration 。我使用了solr配置包中提供的相同的 Sitecore.ContentSearch.Solr.Indexes.config

因为Sitecore.ContentSearch.SolrProvider.SolrContentSearchManager的Initialize方法为操作抛出异常。

public static void Initialize() { foreach (ISearchIndex searchIndex in SolrContentSearchManager.Indexes) searchIndex.Initialize(); //The searchIndex.Operations is throwing above exception when I put watch on that. }

答案 2 :(得分:0)

  • 请确保您的schema.xml包含<types></types>节点,该节点应将<filedtype>节点作为其子节点。以及<fields></fields>节点应该将<field>节点作为其子节点。
  • Solr示例文件夹中的schema.xml可能不包含上述节点。将上述节点添加到现有schema.xml后,从Sitecore生成新的schema.xml(控制面板 - &gt;索引)。
  • 重新启动您的Solr实例并尝试从Sitecore重建索引。
  • 以上步骤为我解决了这个问题。希望它也能帮到你。

检查this以供参考。

答案 3 :(得分:0)

您可以通过在Visual Studio中运行此命令从NuGet获取Castle Windsor:

Install-Package Castle.Windsor -version 3.1.0

您需要在global.asax中设置IOC容器。编辑应用程序的global.asax,如下所示,

<%@Application Language='C#' Inherits="Sitecore.ContentSearch.SolrProvider.CastleWindsorIntegration.WindsorApplication" %>

现在,问题得到解决。

Regrads, Piushpendra