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]
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. –
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. –
Ich habe den Inhalt von solr.log auch oben gepostet. –