Frage

Grüße

Meine Domain-Modell wird folgendermaßen als

class Species {
 private String name;
 ..
 ..
 List<Family> families;
}

class Family{
 private String name;
 private String locusId;
 ..
 List<Member> members; 
}

class Members{
 private String name;
 private String repTranscript;

}

ich verwenden möchte 'Hibernate Search' Abfragen auszuführen wie

org.hibernate.lucene.search.Query luceneQuery = parser.parse( "name:ASpeciesName or name:AGroupName or locudID:someLocusID" );
    org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery );
List result = fullTextQuery.list();

Ich frage mich, da alle drei Klassen haben gleiches Feld ‚Namen‘ ist es gegen alle Klassen gesucht?

Ist das ‚Ergebnis‘ Objekte aller Typen hat?

War es hilfreich?

Lösung

Es hängt auch davon ab, wie Sie Index. Wenn Sie Index jeweils separat Klasse (jede Klasse Bedeutung hat eine @Indexed Anmerkung) und nicht angeben, eine erwartete Typklasse bei der Erstellung des FullTextQuery Du im Ergebnis tatsächlich gemischte Klassen erhalten.

in Ihrem Beispiel jedoch sollten Sie überlegen, auf dem Attribut @IndexedEmbedded Familien und Mitglieder . In diesem Fall wird die Feldnamen in der Lucene Document s wird families.name und families.members.name .

Haben Sie einen Blick auf die Hibernate Search Online-Dokumentation und die eingebettete Indexierungsfunktion.

- Hardy

Andere Tipps

Logisch, ja, denn nirgendwo in der Abfrage haben angegeben Sie die Art der Objekte, die Sie wollen.

Wenn Sie die Ergebnisse auf bestimmte Typen beschränken möchten, müssen Sie diese Typen als Vararg Liste weitergeben müssen:

fullTextSession.createFullTextQuery( luceneQuery, A.class, B.class );

Dies wird beschrieben in der docs .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top