2016-06-27 15 views
2

Ich möchte die Anzahl der gemeinsamen Begriffe zwischen zwei Sätze von distinctive-terms aus zwei Absätzen extrahiert wissen. Ich habe die distinctive-terms aus jedem Absatz mit distinctive-terms Funktion in XQuery extrahiert. Jetzt möchte ich die Anzahl der gemeinsamen Begriffe zwischen den beiden Sets von distinctive-terms wissen. Gibt es eine Funktion, dies zu tun?XQuery, wie die Anzahl der gemeinsamen Begriffe zwischen zwei Sätze von Unterscheidungsbegriffen zu kennen ist

HINWEIS: Ich habe einen Screenshot einer Probe der charakteristischen Begriffe eines Absatzes beigefügt.

Antwort

2

Nun, Sie könnten etwas wie $left-terms[. = $right-terms] tun, um die Schnittmenge zu bekommen, aber ich wäre nicht überrascht, wenn Sie dies über mehrere Dokumente ausführen möchten. In diesem Fall würde ich vorschlagen, markante Begriffe inline zu markieren, oder die Begriffe zum Inhalt hinzuzufügen, diese zu indexieren und eine Facette oder das Low-Level cts:values zu verwenden, um frequenzbasierte Top-Begriffe zu erhalten.

HTH!

1

Klingt, als ob Sie die "Schnittmenge" zwischen zwei Sätzen wissen möchten. Dies kann in MarkLogic einfach mit map:map Objekten erreicht werden.

Sie eine Menge Informationen hier bekommen: http://www.xquerycoder.com/2014/04/set-theory-map-operators.html

Ich werde ein kleines Beispiel geben hier:

(: Two sequences :) 
let $strings1 := ("a", "b", "c", "d", "e") 
let $strings2 := ("a","d","p","q") 

(: Put them in maps :) 
let $map1 := map:new($strings1 ! map:entry(., "1")) 
let $map2 := map:new($strings2 ! map:entry(., "1")) 

(: Take the intersection, get the keys from it :) 
return for $key in map:keys($map1 * $map2) 
    return $key 

Ich werde beachten Sie, dass der Grund, warum ich eine solche Karte Betreiber eher als etwas nutzen würde als $items1[. eq $items2] ist, weil ich finde, dass Kartenbetreiber extrem schnell sind, wenn es um große Datenmengen geht. Außerdem gibt es eine gewisse Flexibilität, die ich bei verschiedenen Arten von Set-Operationen zu schätzen weiß.

+0

In den zwei erstellten Karten, wenn der Wert jedes Schlüssels anders ist als die gemeinsamen Schlüssel aus zwei Karten? zum Beispiel: map1 = [a = 1, b = 2, c = 3] map2 = [a = 2, b = 3, c = 4, d = 5] Im obigen Fall werden die gemeinsamen Schlüssel be - a, b, c im obigen Beispiel angenommen, dass beide Karten vom Typ map: map() sind (nur für das Beispiel, das es als Schlüsselpaar nimmt) –