6

当我将文档添加到索引时,页面返回 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)溶胶: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();  
}  
4

3 回答 3

5

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

于 2011-01-14T11:06:17.747 回答
3

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

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

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

于 2011-05-26T16:38:38.077 回答
1

以下是您可以执行的操作:

  • 注释 solrconfig.xml 中的所有 /dataimport 块
  • 确保 ProtocolVersion 为 HttpVersion.Version10(SolrNet.Impl.SolrConnection 中的 Post 方法)。如果没有,请下载 SolrNet 源代码并根据您的偏好重新编译。
于 2011-01-14T15:16:08.173 回答