2017-11-15 6 views
0

Beim Start der Anwendung möchte ich prüfen, ob Schema existiert und: 1) wenn nicht -> Schema aus Java-Klasse mit Feldern erstellen 2) wenn es für die oben genannte Klasse unterscheidet -> update das Schema 3) wenn Schema 1: 1 mit Feldern in Java-Klasse dann nichts tunErstellen Solr-Schema basierend auf einer Klasse mit SolrJ

Ich habe meine Aufgabe in 3 Teilaufgaben aufgeteilt und meine erste wäre, ein Schema aus bestehenden Java-Klasse zu erstellen.

Hier ist meine Klasse (Getter und Setter weggelassen):

public class Order { 
private String name; 
private String phone; 
private Address address; 

private List<Amenities> amenities; 
private BigDecimal distance; 
private String image; 
private List<Attributes> attributes; 
private List<String> networks; 
private OrderType orderType; 
private Service service; 
} 

Wie Sie sehen können es ganz viele Feldtypen hat, die auch verwendet werden sollte, ein Schema zu erstellen (rekursiv?). Ist es überhaupt möglich, ein solches Schema zu erstellen?

Antwort

1

Es sollte ganz einfach sein zu tun:

Zuerst müssen Sie alle Felder der Klasse aufzulisten, könnte es über reflection erreicht werden. Danach sollten Sie Schema API verwenden, mit dem Sie CRUD-Operationen für die Felder für das Schema ausführen können.

/schema/fields ermöglicht es Ihnen, alle Felder zu bekommen, und dann könnte man replace-field für die Aktualisierung Feld, delete-field zu einer Löschung des Feldes und add-field für das Hinzufügen von Feld. Weitere Informationen finden Sie unter documentation.

Caveat: Schema API wurde ausgehend von Solr hinzugefügt 5.3

+1

Beachten Sie, dass dies schwierig sein wird für alle referenzierten ausgedehnte Objekte (dh die 'Amenities',' Service', 'OrderType',' Attributes' Objekte zu lösen in seinem Beispiel), wie Eltern/Kind-Beziehungen in Solr erfordert große Sorgfalt bei der Abfrage (vor allem außerhalb der einfachen Abfrage) und Indizierung (und mehr als eine einzige Ebene macht es noch schwieriger, für die meisten Funktionen richtig zu machen). – MatsLindh

+0

@MatsLindh, natürlich. Ich habe irgendwie gedacht, dass es für diese Frage etwas zu klein ist. – Mysterion

+0

Vielen Dank für deine Antwort - hast du eine weitere Frage zu SolrJ hinzugefügt, wenn du eine Minute Zeit hast https://stackoverflow.com/questions/47308076/creating-enumtype-solr-using- solrj – doublemc

Verwandte Themen