Neo4j - Ordenar por relevancia
Me gustaría ordenar los datos devueltos por relevancia en Neo4j.
Para mi propósito, la relevancia se puede simplificar a "Índice de la palabra que estoy buscando", donde el índice más bajo es la relevancia más alta.
Ejemplo
Tengo estos tres nodos:
node : {
Label: PROD
properties : {
name: "Bearing replacement Skateboard"
}
}
node : {
Label: PROD
properties : {
name: "Skateboard"
}
}
node : {
Label: PROD
properties : {
name: "L7 Skateboard"
}
}
Quiero que sean devueltos con este pedido:
node : {
Label: PROD
properties : {
name: "Skateboard" // name.indexOf("Skateboard") = 0
}
}
node : {
Label: PROD
properties : {
name: "L7 Skateboard" // name.indexOf("Skateboard") = 3
}
}
node : {
Label: PROD
properties : {
name: "Bearing replacement Skateboard" // name.indexOf("Skateboard") = 19
}
}
Lo que tengo hasta ahora:
String query = "MATCH (n:PROD) where LOWER(n.name) CONTAINS LOWER({textToSearch}) RETURN n ORDER BY LOWER(n.name) ASC LIMIT 15";
String textToSearch = "Skateboard";
Map<String, Object> queryParams = new HashMap<>();
queryParams.put("textToSearch", textToSearch);
try (
Transaction ignored = database.beginTx();
Result resultSet = database.execute(query, queryParams)
) {
Iterator<Node> results = resultSet.columnAs("n");
while (results.hasNext()) {
Node node = results.next();
/* data processing here */
}
}
Esto solo ordena resultados por nombre ascendente. ¿Hay alguna manera de decirle a neo4j que ordene segúnn.name.indexOf({textToFind})
?