为重新索引Sitecore 7的Solr搜索索引时,为什么我“无法将数据写入传输连接”错误?

时间:2015-02-18 14:30:15

标签: solr sitecore sitecore7.5

当我尝试使用Solr重新索引Sitecore 7网站时。我在Solr日志中收到以下错误。

10232 09:10:03 WARN  Crawler : AddRecursive DoItemAdd failed - {550B5CEF-242C-463F-8ED5-983922A39863}
Exception: System.IO.IOException
Message: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host.
Source: System
   at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
   at System.Net.ConnectStream.InternalWrite(Boolean async, Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
   at System.Net.ConnectStream.Write(Byte[] buffer, Int32 offset, Int32 size)
   at SolrNet.Impl.SolrConnection.CopyTo(Stream input, Stream output)
   at SolrNet.Impl.SolrConnection.PostStream(String relativeUrl, String contentType, Stream content, IEnumerable`1 parameters)
   at SolrNet.Impl.SolrConnection.Post(String relativeUrl, String s)
   at SolrNet.Impl.SolrBasicServer`1.SendAndParseHeader(ISolrCommand cmd)
   at Sitecore.ContentSearch.SolrProvider.SolrBatchUpdateContext.AddRange(IEnumerable`1 group, Int32 groupSize)
   at Sitecore.ContentSearch.SolrProvider.SolrBatchUpdateContext.AddDocument(Object itemToAdd, IExecutionContext[] executionContexts)
   at Sitecore.ContentSearch.SitecoreItemCrawler.DoAdd(IProviderUpdateContext context, SitecoreIndexableItem indexable)
   at Sitecore.ContentSearch.HierarchicalDataCrawler`1.CrawlItem(Tuple`3 tuple)

Nested Exception

Exception: System.Net.Sockets.SocketException
Message: An existing connection was forcibly closed by the remote host
Source: System
   at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)

为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:3)

尝试浏览您的solr日志,查看来自 SolrCore 的任何错误,方法是浏览http://yoursolrinstance/solr/#/~logging

我发现Solr遇到了dynamicField类型生成的字段的问题。

我的实例中的Solr正在寻找' myfieldname_t_cs' 并为cs中的项目抛出' unknown field' 例外-CZ语言。

solr schema.xml中的动态字段定义有一个字段定义<dynamicField name="*_t_cz" type="text_cz" indexed="true" stored="true" />,但没有映射_cs后缀的字段,所以我添加了<dynamicField name="*_t_cs" type="text_cz" indexed="true" stored="true" />重新启动Tomcat并重建我的索引并清除了错误。

我也有关于波兰语内容的Solr错误,因为这里根本没有定义语言区域信息,挪威的schema.xml中定义的字段为<dynamicField name="*_t_no" type="text_no" indexed="true" stored="true" />但是solr正在搜索后缀 &#39; * _ nb&#39; 例如,未知字段&#39; id_t_nb&#39;并抛出一个未知的字段例外。

Sitecore和Solr使用Region Info映射语言的方式似乎有问题我将使用Sitecore支持提出票证,并在收到回复时更新答案。

你在错误中提到中文可能是Solr中没有定义中文,但是你在Sitecore中有一些内容。

<强>更新

Sitecore已将此行为确认为错误

  

我发现在生成搜索模式和更新索引时   使用不同的属性(语言和文化的名称)。一世   将此行为注册为错误并注册实施的愿望   完全支持SOLR默认支持的语言。