2011-01-06 38 views
6

cuando agrego documentos al índice, la página vuelve 400 Bad Request. Y el solr ha sido iniciado y puede obtener datos de la base de datos. Entonces necesito poner los datos en el índice. Sin embargo, siempre ha fallado.El servidor remoto devolvió un error: (400) Solicitud incorrecta. cuando agregar documentos al índice


1) Aquí es fragmento de código de 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) aquí es parte principal de 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) error es aquí:

/// <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

nuevo SolrBaseRepository.Instance () .start(); var Solr = ServiceLocator.Current.GetInstance >(); var specificPlayer = new PlayerRepository() GetPlayer (player.FirstName, player.LastName, player.Position).; solr.Add (specificPlayer); solr.Commit(); – Benny

+0

publique el código en la pregunta, formateado correctamente. También publique la definición de SolrBaseRepository. –

+0

también publica la definición de Player y su schema.xml. –

Respuesta

5

El registro de Solr le daría la información que necesita, o si ha abierto desde la consola no debe ser una excepción tirar a la consola.

+2

¡Has roto 1000 puntos por ti! – dotancohen

1

Esto es lo que puede hacer:

  • comentario a todos/dataimport bloques en solrconfig.xml
  • Asegúrese ProtocolVersion es HttpVersion.Version10 (el método Publicar en SolrNet.Impl.SolrConnection). De lo contrario, descargue la fuente de SolrNet y vuelva a compilar con su preferencia.
+0

¿Experimentó algún problema que lo motivó a cambiar a HttpVersion.Version10? Me gustaría saber sobre eso. –

+1

He leído que cambiar a HttpVersion.Version10 me ayudaría. Creo que lo que sí me ayudó fue comprobar que el archivo solrconfig.xml estaba bien formado. –

3

Mira archivo de registro de Tomcat, contiene detallada excepción Solr. En mi máquina se encuentra en

C: \ Archivos de programa \ Apache Software Fundación \ Tomcat 7.0 \ logs

Usted encontrará un archivo llamado en el formato catalina..log. (Por ejemplo catalina.2011-05-26.log)

Cuestiones relacionadas