2017-05-05 1 views
0

J'ai indexé la propriété title d'un nœud de livre dans Neo4j en utilisant les capacités de texte intégral de Lucene. Quand je veux rechercher un terme particulier (comme wars) dans un titre sur tous les nœuds, je peux faire ce qui suit:Récupérer des scores pour chaque document Neo4j Lucene, pas seulement la commande

 IndexHits<Node> nodes = graphDb.index().forNodes("node_auto_index").query("title:wars"); 
    for (Node n : nodes) { 
     //do something 
    } 
    nodes.close(); 

Ce retourne les nœuds classés par ordre de certains points de fréquence maintenue par Lucene.

Je voudrais connaître le score réel associé à chacun des nœuds du résultat. Par exemple, si l'indice regarde en interne comme suit:

wars -> id8:4, id3:3, id1:2

Je voudrais revenir les scores correspondants et 1 au lieu 4,3 de seulement les ids.

Merci.

Répondre

1

Vous pouvez utiliser les éléments suivants:

IndexHits<Node> hits = graphDb.index().forNodes("node_auto_index").query("title:wars"); 
while (hits.hasNext()) { 
    Node node = hits.next(); 
    float weight = hits.currentScore(); 
} 
+0

Merci! Existe-t-il une méthode à temps constant pour récupérer le score donné par un terme et un identifiant de document? Par exemple '(wars, id1) = 2'? – kami