我需要合并两个全文电话的结果。两种返回都在几秒钟内分开,但要花几分钟。
我删除了所有的MATCH和其他子句以最好地隔离问题。
如果我打电话
CALL db.index.fulltext.queryNodes("nameIndex", 'some word') YIELD node as kw
RETURN count(kw)
或
CALL db.index.fulltext.queryNodes("article_fulltext", 'other word') YIELD node as a
RETURN count(a)
两者都在不到一秒钟的时间内返回,并显示大约500.000
但是如果我打电话
CALL db.index.fulltext.queryNodes("nameIndex", 'some word') YIELD node as kw
CALL db.index.fulltext.queryNodes("article_fulltext", 'other word') YIELD node
RETURN count(a), count(kw)
需要几分钟。
如果没有效果,我试图分开。
CALL db.index.fulltext.queryNodes("nameIndex", 'some word') YIELD node as kw
WITH kw , count(kw) as kwl
WITH kwl
CALL db.index.fulltext.queryNodes("article_fulltext", 'other word') YIELD node as a
WITH kwl, a ,count(a) as al
RETURN kwl, al
如何告诉neo4j此调用是独立的?
由于第一个CALL
返回500K结果,因此第二个CALL
被调用500K次。这显然不是您想要的,而且非常非常慢。而且它还会给您错误的计数。
使用COUNT
将结果数从第一个CALL
减少为一个。
例如,这应该更快,并且还可以为您提供正确的计数:
CALL db.index.fulltext.queryNodes("nameIndex", 'some word') YIELD node
WITH COUNT(node) AS kws
CALL db.index.fulltext.queryNodes("article_fulltext", 'other word') YIELD node
RETURN COUNT(node) AS ows, kws