远程服务器返回错误:(400)错误请求。将文档添加到索引时

时间:2011-01-06 06:28:57

标签: solrnet

当我将文档添加到索引时,该页面返回400个错误请求。 solr已经启动并可以从数据库中获取数据。所以我需要将数据放入索引中。然而,它总是失败。


1)这是SolrBaseRepository的代码片段

/// <summary>    
/// Base repository for Solr    
/// </summary>  
public class SolrBaseRepository  
{    
    /// <summary>    
    /// New instance of Solr    
    /// </summary>    
    /// <typeparam name="T">Specific type</typeparam>  
    public class Instance<T>    
    {    
        /// <summary>  
        /// Start Solr instance for a specific type  
        /// </summary>  
        public void Start()  
        {  
            var instances = Startup.Container.GetAllInstances(typeof (ISolrOperations<T>));  

            if (instances.Count() == 0)  
            {  
                Startup.Init<T>(Toolbox.SolrUrl);  
            }  
        }  

    }  
}  

2)这是schemal.xml的主要部分

<fields>    
    <field name="id" type="int" indexed="true" stored="true" required="true" />   
    <field name="firstname" type="text" indexed="true" stored="false"required="false" />   
    <field name="lastname" type="text" indexed="true" stored="false" required="false" />  
    <field name="position" type="text" indexed="true" stored="false" required="false" />  
    <field name="text" type="text" indexed="true" stored="false" multiValued="true" />  
</fields>  
<copyField source="firstname" dest="text" />    
<copyField source="lastname" dest="text" />    
<copyField source="position" dest="text" />    
<uniqueKey>id</uniqueKey>    
<defaultSearchField>text</defaultSearchField>    
<solrQueryParser defaultOperator="AND" />     

3)solrurl:http://localhost:8080/solr

<appSettings>  
<add key="SolrUrl" value="http://localhost:8080/solr"/>  
</appSettings>  

4)错误在这里:

/// <summary>  
/// Add all players to the index  
/// </summary>  
public void IndexPlayers()  
{  
    new SolrBaseRepository.Instance<Player>().Start();  

    var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Player>>();  
    var players = new PlayerRepository().GetPlayers();  

    **solr.Add(players);** // The remote server returned an error: (400) Bad Request.   
    solr.Commit();  
}  

3 个答案:

答案 0 :(得分:5)

solr日志会为您提供所需的信息,或者如果您从控制台打开,则应该向控制台发送异常。

答案 1 :(得分:3)

查看Tomcat日志文件,它包含详细的Solr异常。在我的机器上,它位于

C:\ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ logs

您将找到以catalina..log格式命名的文件。 (例如catalina.2011-05-26.log)

答案 2 :(得分:1)

以下是您可以做的事情:

  • 在solrconfig.xml中注释所有/ dataimport块
  • 确保ProtocolVersion是HttpVersion.Version10(SolrNet.Impl.SolrConnection中的Post方法)。如果没有,请下载SolrNet源并根据您的喜好重新编译。