6

Ich habe ein Problem mit Apache Solr, wo ich Felder in Listen in JSON-Antworten eingewickelt erhalten, aber sie sollten Singular sein. Hier ist ein Auszug aus schema.xml, zwei Beispielfeldern gibt mir ein Problem sind django_ct und django_id:Felder in Apache Solr Antwort sind mehrwertig, wenn sie singular sein sollten

<fields> 
    <!-- general --> 
    <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/> 
    <field name="django_ct" type="string" indexed="true" stored="true" multiValued="false"/> 
    <field name="django_id" type="string" indexed="true" stored="true" multiValued="false"/> 

Hier ist ein Beispiel dafür, wie Daten auf Solr geschrieben:

<doc> 
    <field name="id">search.productcategory.3</field> 
    <field name="gender">M</field> 
    <field name="name">OBQYHSOQLWOUEHRMPSDI</field> 
    <field name="text">M\nOBQYHSOQLWOUEHRMPSDI</field> 
    <field name="django_id">3</field> 
    <field name="django_ct">search.productcategory</field> 
</doc> 

Und hier ist ein Beispiel für die in solr gespeicherte Datei:

"response": { 
    "numFound": 1, 
    "start": 0, 
    "docs": [ 
     { 
     "django_ct": [ 
      "search.productcategory" 
     ], 
     "name": [ 
      "Example" 
     ], 
     "text": [ 
      "Male\nExample" 
     ], 
     "id": "search.productcategory.2", 
     "gender": [ 
      "Male" 
     ], 
     "django_id": [ 
      2 
     ], 
     "_version_": 1502081283634757600 
     } 
    ] 
    } 

Warum werden diese Felder in Listen eingeschlossen? Im Schema ist das Attribut multiValued für diese Felder auf "false" gesetzt. Abgesehen von der Erstellung des Kerns und dem Ersetzen von schema.xml ist alles andere sofort einsatzbereit. Ich greife auf Solr mit Haystack (ein Django-Plugin) zu, der Code erwartet, einzelne Werte für diese Felder zu erhalten, ist aber vollständig durchbrochen. Das Zurückverfolgen des Problems scheint darauf zurückzuführen zu sein, wie Solr konfiguriert ist.

Edit: Hier sind der komplette Inhalt solr.log, alles dies wurde nach dem Starten des Servers angemeldet, keinen Ausgang hatten ein paar Beispiel-Abfragen ausgeführt werden:

INFO - 2015-05-27 08:38:12.563; [ ] org.eclipse.jetty.server.Server; jetty-8.1.10.v20130312 
INFO - 2015-05-27 08:38:12.586; [ ] org.eclipse.jetty.deploy.providers.ScanningAppProvider; Deployment monitor /Users/sampeka/solr-5.1.0/server/contexts at interval 0 
INFO - 2015-05-27 08:38:12.593; [ ] org.eclipse.jetty.deploy.DeploymentManager; Deployable added: /Users/sampeka/solr-5.1.0/server/contexts/solr-jetty-context.xml 
INFO - 2015-05-27 08:38:13.629; [ ] org.eclipse.jetty.webapp.StandardDescriptorProcessor; NO JSP Support for /solr, did not find org.apache.jasper.servlet.JspServlet 
INFO - 2015-05-27 08:38:13.682; [ ] org.apache.solr.servlet.SolrDispatchFilter; SolrDispatchFilter.init()[email protected] 
+0

Zugriff auf solr aus dem Heuhaufen mit SearchQuerySet? Wenn ja, können Sie die für den Zugriff auf solr verwendeten Filter einfügen. Suchen Sie auch nach solr.log und suchen Sie die Protokolleinträge, wenn Sie die obige Suche durchführen. Es zeigt die genauen Parameter an, die an Solr gesendet werden - was genug Hinweise geben wird, um dies weiter zu debuggen. –

+0

Die Antwort, die ich gepostet habe, stammt direkt von Solr über die Admin-Schnittstelle und stimmt mit dem Problem überein, auf das ich über den Heuhaufen zugegriffen habe. SearchQuerySets sind deswegen defekt. –

+0

Ich habe den Inhalt von solr.log auch oben gepostet. –

Antwort

7

Got an die Wurzel des Problems . Das Problem war, dass solrconfig.xml nicht richtig konfiguriert wurde. Standardmäßig ist die Klasse schemafactory auf ManagedIndexSchemaFactory eingestellt, wodurch die Verwendung von schema.xml überschrieben wird. Durch die Änderung der schemaFactory in die Klasse ClassicIndexSchemaFactory wird die Verwendung von schema.xml erzwungen und das Schema durch API-Aufrufe unveränderbar gemacht.

Verwandte Themen