2011-01-06 23 views
6

dizinine eklendiğinde, sayfa 400 hatalı istek döndürür. Ve solr başlatıldı ve veri tabanından veri alabilir. Bu yüzden verileri dizine koymam gerek. Ancak, her zaman başarısız oldu.Uzak sunucu bir hata verdi: (400) Hatalı İstek. İndekslemek için dokümanlar eklediğimde dokümanlar


1) Burada SolrBaseRepository

kod pasajı
/// <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) burada schemal.xml ana parçası olduğu

<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) hata Burada:

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

new 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

Lütfen kodu doğru şekilde biçimlendirilmiş soruya gönderin. Ayrıca SolrBaseRepository tanımını gönderin. –

+0

ayrıca Player ve schema.xml dosyanızın tanımını da yayınlar. –

cevap

5

Solr günlüğü gerektiğini size bilgi verecek, yoksa konsoldan açılan bir istisna konsoluna atmak olmalıdır.

+2

Sizin için 1000 puan kırdı! – dotancohen

1

Burada yapabilecekleriniz:

  • Comment tüm/solrconfig.xml
  • yılında dataimport bloklar emin ProtocolVersion (SolrNet.Impl.SolrConnection Sonrası yöntemi) HttpVersion.Version10 olduğundan emin olun. Aksi takdirde SolrNet kaynağını indirin ve tercihinize göre yeniden derleyin.
+0

HttpVersion.Version10'a geçmek için sizi motive eden herhangi bir sorunla karşılaştınız mı? Bunu duymak isterim. –

+1

HttpVersion.Version10 uygulamasına geçmenin yardımcı olacağını okudum. Bana yardım eden şey, solrconfig.xml'in iyi oluşturulduğunu kontrol ediyordu. –

3

Tomcat günlük dosyasına bakın, ayrıntılı Solr istisnası içeriyor. Benim makinede o

C'de bulunur: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ günlükleri

Sen biçim catalina..log adlı bir dosya göreceksiniz. (örneğin, catalina.2011-05-26.log)