2017-12-15 3 views
0

Betrachten Sie die folgende indizierte Einheit:Gibt es einen Weg in der Hibernate-Suche nach Feldern, in denen der Suchbegriff gefunden wurde?

@Entity 
@Indexed 
public class Document { 

    ... 

    @Field 
    private String title; 

    @Field 
    private String text; 

} 

Gibt es eine Möglichkeit Benutzer eine Facette zu präsentieren, die zwei Optionen title und text mit einer Zählung von Dokumenten in denen der Suchbegriff in title und text enthalten jeweils gefunden wurde? Und der Benutzer sollte diese Optionen auswählen können, um nur nach interessanten Feldern zu suchen.

Zum Beispiel gibt es drei Dokumente:

{ "title" : "One", "text" : "One" } 
{ "title" : "One and Two", "text" : "Two" } 
{ "title" : "Three", "text" : "Three and Two" } 

Und die Suchanfrage „Eins“ ist: dann wird die Facette sein: feature

{ "title" : 2, "text" : 1 } 

Antwort

1

Es gibt kein solches in eingebauten Hibernate Search, aber Sie können es selbst tun. Statt eine einzelne Abfrage von ausgeführt wird, führt drei:

  1. einen mit einem Filter auf „Titel oder Text“, ohne
  2. eine mit einem Filter nur auf dem Feld „Titels“ Facettierung, mit Facettierung auf dem „title "Feld
  3. ein mit einem Filter nur auf dem Feld‚Text‘, mit Facettierung auf dem Feld‚Text‘

dann die Ergebnisse der ersten Abfrage sammeln, die‚Titel‘Facette aus der zweiten Abfrage, und die "Text" -Facette von der dritten Abfrage.

Weitere Informationen über Facettierung in Hibernate Suche: https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#query-faceting

Verwandte Themen