SolrNet: SolrConnectionException (400) fehlerhafte Anforderung beim Versuch, ein Commit und ein Hinzufügen durchzuführen
Ich bin an dem Punkt angelangt, an dem SolrNet die Methode "Add" ausführt. Wenn ich jedoch versuche, "Commit" auszuführen, wird der Fehler angezeigt. Das Folgende ist mein schema.xml, Modell, Code, der es aufruft, und der Fehler, den ich erhalte. Noch seltsamer ist, dass das Modell trotz des Fehlers zu meinem Solr-Index hinzugefügt wird, nachdem ich Tomcat neu gestartet habe (daher wird mein Modell trotz des Fehlers immer noch hinzugefügt, aber nicht sofort):
schema.xml (Felder und Feldtypen):
<!-- Fields -->
<field name="part_numbers" type="my_string_exact" indexed="true" stored="true" multiValued="true" />
<field name="page_url" type="my_string_exact" indexed="true" stored="true" />
<field name="product_name" type="my_string" indexed="true" stored="true" />
<!-- FieldTypes -->
<fieldType name="my_string_exact" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="my_string" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
<fieldType name="my_int" class="solr.IntField" omitNorms="true" />
Model (Product.cs) * HINWEIS - PageId verwendet die Solr-Standard-ID, die eine eindeutige und erforderliche Zeichenfolge ist:
public class Product
{
[SolrUniqueKey("id")]
public string PageId { get; set; }
[SolrField("part_numbers")]
public ICollection<string> PartNumbers { get; set; }
[SolrField("page_url")]
public string PageUrl { get; set; }
[SolrField("product_name")]
public string Name { get; set; }
}
Code-Initialisierung, Aufrufen von Add and Commit * HINWEIS - Dies ist ein Komponententest, daher wird init nur einmal aufgerufen:
Startup.Init<Product>("http://localhost:8080/solr");
Product testProd = new Product() {
EPiPageId = "44",
Name = "TestProd3",
PageUrl = "/TestProd3",
PartNumbers = new List<string>() { "000022222", "000000333333" }
};
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
solr.Add(testProd);
solr.Commit(); // Bad Request Error occurs here.
Fehlermeldung:
SolrNet.Exceptions.SolrConnectionException was unhandled by user code
HResult=-2146232832
Message=The remote server returned an error: (400) Bad Request.
Source=SolrNet
StackTrace:
at SolrNet.Impl.SolrConnection.Post(String relativeUrl, String s) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrConnection.cs:line 104
at SolrNet.Commands.CommitCommand.Execute(ISolrConnection connection) in c:\prg\SolrNet\svn\SolrNet\Commands\CommitCommand.cs:line 71
at SolrNet.Impl.SolrBasicServer`1.Send(ISolrCommand cmd) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrBasicServer.cs:line 87
at SolrNet.Impl.SolrBasicServer`1.SendAndParseHeader(ISolrCommand cmd) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrBasicServer.cs:line 91
at SolrNet.Impl.SolrBasicServer`1.Commit(CommitOptions options) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrBasicServer.cs:line 54
at SolrNet.Impl.SolrServer`1.Commit() in c:\prg\SolrNet\svn\SolrNet\Impl\SolrServer.cs:line 24
InnerException: System.Net.WebException
HResult=-2146233079
Message=The remote server returned an error: (400) Bad Request.
Source=System
StackTrace:
at System.Net.HttpWebRequest.GetResponse()
at HttpWebAdapters.Adapters.HttpWebRequestAdapter.GetResponse() in c:\prg\SolrNet\svn\HttpWebAdapters\Impl\HttpWebRequestAdapter.cs:line 36
at SolrNet.Impl.SolrConnection.GetResponse(IHttpWebRequest request) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrConnection.cs:line 160
at SolrNet.Impl.SolrConnection.Post(String relativeUrl, String s) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrConnection.cs:line 101
InnerException:
BEARBEITEN Vielen Dank an Paige für die Antwort: Das Problem war ein "waitFlush" -Fehler, der ein Fehler bei älteren Versionen von SolrNet ist. Die von mir verwendete Version von SolrNet stammt von VS NuGet mit der Version 0.3.1 (von der ich annahm, dass es sich um die neueste stabile Version handelt). Ihre Google Code-Site hat nicht ihren neuesten Build, sondern den Build-Server (hier:http://teamcity.codebetter.com/project.html?projectId=project36&guest=1 unter "Artefakte") hatte spätestens mit der Behebung dieses Fehlers. Problem für mich gelöst.