@@ -35,12 +35,14 @@ def test_hybrid_search_basic() -> None:
35
35
"CALL { "
36
36
"CALL db.index.vector.queryNodes($vector_index_name, $top_k, $query_vector) "
37
37
"YIELD node, score "
38
- "RETURN node, score UNION "
38
+ "WITH collect({node:node, score:score}) AS nodes, max(score) AS vector_index_max_score "
39
+ "UNWIND nodes AS n "
40
+ "RETURN n.node AS node, (n.score / vector_index_max_score) AS score UNION "
39
41
"CALL db.index.fulltext.queryNodes($fulltext_index_name, $query_text, {limit: $top_k}) "
40
42
"YIELD node, score "
41
- "WITH collect({node:node, score:score}) AS nodes, max(score) AS max "
43
+ "WITH collect({node:node, score:score}) AS nodes, max(score) AS ft_index_max_score "
42
44
"UNWIND nodes AS n "
43
- "RETURN n.node AS node, (n.score / max ) AS score "
45
+ "RETURN n.node AS node, (n.score / ft_index_max_score ) AS score "
44
46
"} "
45
47
"WITH node, max(score) AS score ORDER BY score DESC LIMIT $top_k "
46
48
"RETURN node { .*, `None`: null } AS node, labels(node) AS nodeLabels, elementId(node) AS id, score"
@@ -125,12 +127,14 @@ def test_hybrid_search_with_retrieval_query() -> None:
125
127
"CALL { "
126
128
"CALL db.index.vector.queryNodes($vector_index_name, $top_k, $query_vector) "
127
129
"YIELD node, score "
128
- "RETURN node, score UNION "
130
+ "WITH collect({node:node, score:score}) AS nodes, max(score) AS vector_index_max_score "
131
+ "UNWIND nodes AS n "
132
+ "RETURN n.node AS node, (n.score / vector_index_max_score) AS score UNION "
129
133
"CALL db.index.fulltext.queryNodes($fulltext_index_name, $query_text, {limit: $top_k}) "
130
134
"YIELD node, score "
131
- "WITH collect({node:node, score:score}) AS nodes, max(score) AS max "
135
+ "WITH collect({node:node, score:score}) AS nodes, max(score) AS ft_index_max_score "
132
136
"UNWIND nodes AS n "
133
- "RETURN n.node AS node, (n.score / max ) AS score "
137
+ "RETURN n.node AS node, (n.score / ft_index_max_score ) AS score "
134
138
"} "
135
139
"WITH node, max(score) AS score ORDER BY score DESC LIMIT $top_k "
136
140
+ retrieval_query
@@ -145,12 +149,14 @@ def test_hybrid_search_with_properties() -> None:
145
149
"CALL { "
146
150
"CALL db.index.vector.queryNodes($vector_index_name, $top_k, $query_vector) "
147
151
"YIELD node, score "
148
- "RETURN node, score UNION "
152
+ "WITH collect({node:node, score:score}) AS nodes, max(score) AS vector_index_max_score "
153
+ "UNWIND nodes AS n "
154
+ "RETURN n.node AS node, (n.score / vector_index_max_score) AS score UNION "
149
155
"CALL db.index.fulltext.queryNodes($fulltext_index_name, $query_text, {limit: $top_k}) "
150
156
"YIELD node, score "
151
- "WITH collect({node:node, score:score}) AS nodes, max(score) AS max "
157
+ "WITH collect({node:node, score:score}) AS nodes, max(score) AS ft_index_max_score "
152
158
"UNWIND nodes AS n "
153
- "RETURN n.node AS node, (n.score / max ) AS score "
159
+ "RETURN n.node AS node, (n.score / ft_index_max_score ) AS score "
154
160
"} "
155
161
"WITH node, max(score) AS score ORDER BY score DESC LIMIT $top_k "
156
162
"RETURN node {.name, .age} as node, score"
0 commit comments