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 に答える