2010-07-09 13 views
18

Wie kann ich eine Solr-Instanz für alle (oder vorangestellten) Feldnamen abfragen?Solr: Abrufen von Feldnamen aus einem Solr-Index?

Ich möchte wie dynamische Felder verwenden

category_0_s 
category_1_s 
... 

, aber ich weiß nicht, wie viele existieren. Daher möchte ich alle Felder abrufen (vorzugsweise mit dem Präfix "category_").

Irgendwelche Ideen? Dank

Antwort

20

Verwenden Sie die luke Handler:

http://solr:8983/solr/admin/luke?numTerms=0 

Verwenden Sie einen XPath ganze Feld erhalten, die den Tag DYNAMIC die dynamische Felder Definition hat passend zu dem Sie suchen.

+1

JA! Das ist es. Vielen Dank. – floplus

+0

@Philippe Das wird nicht die Namen aller verwendeten dynamischen Felder bekommen, was das ursprüngliche Poster verlangt hat. Lesen Sie die Frage sorgfältig durch und beantworten Sie sie. – GoalBased

+0

@GoalBased Ok, aber wenn Sie anstatt eine bessere Lösung zu finden, würde das auch helfen. Um also meine "Antwort" zu aktualisieren, lautet der korrekte Aufruf für dynamische Felder http: // host: /solr/collection/schema/dynamicfields. Für weitere Optionen siehe https://cwiki.apache.org/confluence/display/solr/Schema+API – Philippe

1

Wenn Sie dies von Ihrer Java-Anwendung aus tun müssen, können Sie Solrj und LukeRequestRequestHandler verwenden.

Ihr Code würde so aussehen.

+0

Woher kommt 'facet'? – tar

+0

Sorry, es war ein Tippfehler. Der Code wurde korrigiert, um die hashmap-Einträge effizient zu durchlaufen. Hoffe das hilft. – cjungel

25

Diese Abfrage gibt eine durch Kommas getrennte Liste aller aktiven Felder zurück, einschließlich der dynamischen Felder.

select?q=*:*&wt=csv&rows=0&facet 

die ursprüngliche Frage zu beantworten, ist dies, wie eine Liste aller Felder mit category_ beginnen zu bekommen

select?q=*:*&wt=csv&rows=0&facet&fl=category_* 

Die Anwesenheit des facet Parameter Diese Abfrage Arbeit machen auf neuere Versionen benötigt wird von Solr. Bei älteren Versionen funktioniert es ohne es. Bei älteren Versionen funktioniert ein Platzhalter im Parameter fl nicht.

+2

In Solr5 verursacht "facet" und "facet.field" eine 400 Bad Request, aber immer noch die Felder enthalten. Verlassen Sie 'facet.field' gibt die Felder und eine 200 Erfolg – Izkata

+0

@Izkata Danke für die Verbesserung! Ich habe meine Antwort aktualisiert. Seltsamerweise funktioniert die Einstellung "facet = true" nicht, aber "facet" ohne Wert funktioniert. – GoalBased

+0

Auf Solr 6.3 funktionierte nur fl = id, category ... ohne facet = on. Ich frage mich, ob ich noch etwas im Schema hinzufügen muss, um Zusatzinformationen anzuzeigen – gadelkareem

Verwandte Themen