2017-10-24 1 views
4

In der Suchdefinition können die Felder innerhalb der Struktur keine "Attribut" Indizierung haben.Vespa: Können wir auf verschachtelten Feldern aggregieren?

http://docs.vespa.ai/documentation/reference/search-definitions-reference.html#field_types

Auch Struktur und Karten sind standardmäßig nicht zuschreiben. Resultierende Suchdefinition würde wie folgt aussehen:

struct nlp { 
    field token type string { 
     match: text //can't add indexing here 
    } 
} 

field n type nlp { 
     indexing: summary //can't add attribute here 
} 

Wie von „n.token“ Suchdefinition, so dass wir können Gruppe hinzufügen? Ist es möglich, ein Attribut oder eine Indizierung für Strukturfelder hinzuzufügen? Oder gruppieren Sie nach Feldern, die nicht Attribut sind?

Antwort

4

Feldtyp Struct kann nicht Attribut haben, die notwendig Voraussetzung ist, wenn Sie mit indexierten Suche Gruppierung ausgeführt werden soll, ist http://docs.vespa.ai/documentation/reference/search-definitions-reference.html#struct

Das einzige, was sehen Sie mit struct Felder mit mode = Index wirklich tun können, sie haben als Teil der Zusammenfassung (Antwort). Sie könnten einen benutzerdefinierten Sucher hinzufügen, der die Aggregation über dem Feld struct ausführt, wobei die oberen K abgerufenen Treffer analysiert werden. Siehe http://docs.vespa.ai/documentation/searcher-development.html

Mit mode = Streaming Sie können die Gruppierung über struct Felder laufen, mehr über hier Streaming http://docs.vespa.ai/documentation/streaming-search.html

1

noch nicht damit als Antwort Posting kommentieren.

@jkb bedeutet dies, dass wir eine Suche auf einem Feld ausführen, nicht in einer Struktur, viele Dokumente zurückgeben und dann in einem Sucher zusammenfassen (die Verkettung eines Suchers würde im Prinzip ähnliche Dinge tun)?

ist es auch richtig zu sagen, dass verschachtelte Felder in einem Dokument nicht indiziert werden können und wiederum effektiv gesucht werden (ich möchte keine Streaming-Suche verwenden) und daher muss die Struktur immer flach sein, damit die Indexsuche funktioniert ? Ich kann in den meisten Fällen eine flache Struktur erreichen, aber was ist mit Feldern, die ein Array von Objekten haben, wo ich nach einem Attribut eines solchen Objekts suchen möchte?

"x" : [ 
    object: { attributes}, 
    object: {attributes} 
] 
+0

Ihr Verständnis ist richtig. Felder vom Typ struct unterstützen keine Indexierung und keine Suche in Vespa. – jkb

+0

Es unterstützt Suche und Gruppierung mit mode = streaming, aber das ist ein Modus, der für sehr spezifische Anwendungsfälle ist, z. B. Suche in persönlichen Daten, wo die qps pro Benutzer begrenzt ist. – jkb

+1

@jkb um das verschachtelte Dokument zu reduzieren, was ist die beste Strategie, die wir verwenden können? Der Feldname lässt keine Sonderzeichen zu. Daher ist "a.b.c" oder "a-b-c" oder "a_b_c" kein gültiger Feldname. eine einfache Möglichkeit, die verschachtelten Objekte zu verflachen? – enator

Verwandte Themen