2011-01-06 3 views
6

Wenn ich Dokumente zum Index hinzufüge, gibt die Seite 400 ungültige Anforderungen zurück. Und das Solr wurde gestartet und kann Daten aus der Datenbank abrufen. Also muss ich die Daten in den Index setzen. Es ist jedoch immer gescheitert.Der Remote-Server hat einen Fehler zurückgegeben: (400) Ungültige Anforderung. Beim Hinzufügen von Dokumenten zum Index


1) Hier ist Code-Schnipsel von 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) hier ist Hauptteil 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) Fehler ist hier:

/// <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(); 
} 
+0

neue SolrBaseRepository.Instance () .Start(); var solr = ServiceLocator.Current.GetInstance >(); var specificPlayer = neues PlayerRepository(). GetPlayer (player.FirstName, player.LastName, player.Position); Solr.Add (spezifischerPlayer); solr.Commit(); – Benny

+0

posten Sie bitte den Code in der Frage richtig formatiert. Veröffentlichen Sie auch die Definition von SolrBaseRepository. –

+0

auch die Definition von Player und Ihre schema.xml. –

Antwort

5

Das solr Protokoll würden Sie die Informationen, die Sie benötigen, oder wenn Sie von der Konsole geöffnet sollte eine Ausnahme von der Konsole werfen sein.

+2

Brach 1000 Punkte für dich! – dotancohen

1

Hier ist, was Sie tun können:

  • Kommentieren Alle/Data Import Blöcke in solrconfig.xml
  • Stellen Sie sicher, Protocol ist HttpVersion.Version10 (die Post-Methode in SolrNet.Impl.SolrConnection). Wenn nicht, laden Sie die SolrNet-Quelle herunter und kompilieren Sie sie nach Ihren Wünschen.
+0

Haben Sie ein Problem festgestellt, das Sie dazu veranlasst hat, zu HttpVersion.Version10 zu wechseln? Ich würde gerne darüber erfahren. –

+1

Ich habe gelesen, dass der Wechsel zu HttpVersion.Version10 helfen würde. Ich denke, was mir geholfen hat, war zu überprüfen, dass die solrconfig.xml wohlgeformt war. –

3

Betrachten Sie die Tomcat-Protokolldatei, sie enthält detaillierte Solr-Ausnahme. \ Programme \ Apache Software Foundation \ Tomcat 7.0 \ logs

Sie finden eine Datei mit dem Namen im Format catalina..log: Auf meinem Rechner ist es bei

C liegt. (z.B. catalina.2011-05-26.log)