涉及ArangoDb集群上的两个全文搜索:V8
我正在调查ArangoDb集群,发现在使用两个FULLTEXT()搜索的情况下,其中一个涉及V8引擎。 我的数据:涉及ArangoDb集群上的两个全文搜索:V8,arangodb,Arangodb,我正在调查ArangoDb集群,发现在使用两个FULLTEXT()搜索的情况下,其中一个涉及V8引擎。 我的数据: [ { "TITL": "Attacks induced by bromocryptin in Parkinson patients", "WORD": [ "hascites", "Six patients with Parkinson's disease" ], "ID":1, }, { "TITL": "Linear mode
[
{
"TITL": "Attacks induced by bromocryptin in Parkinson patients",
"WORD": [
"hascites",
"Six patients with Parkinson's disease"
],
"ID":1,
},
{
"TITL": "Linear modeling of possible mechanisms for Parkinson tremor generation",
"WORD": [
"hascites",
"jsubsetIM"
],
"ID":2,
},
{
"TITL": "Drug-induced parkinsonism in the rat- a model for biochemical ...",
"WORD": [
"hascites",
"Following treatment with reserpine or alternatively with ...",
"hasabstract"
],
"ID":3,
}
]
最简单的查询:
FOR title IN FULLTEXT(pmshort,"TITL","parkinson")
FOR word IN FULLTEXT(pmshort,"WORD","hascites")
FILTER title.ID==word.ID
RETURN title
换句话说,我试图在TITL
中查找所有包含parkinson
的文档,并在WORD
中查找hascites
。此示例经过了严重简化,因此
FILTER word.WORD=='hascites'
这是不可能的。需要两个或多个全文搜索来提供必要的功能。
藏品包括约52万份文件。在每个字段上设置全文索引
我发现单独运行的每个全文查询都涉及索引:
Execution plan:
Id NodeType Site Est. Comment
1 SingletonNode DBS 1 * ROOT
5 IndexNode DBS 526577 - FOR title IN pmshort /* fulltext index scan */
8 RemoteNode COOR 526577 - REMOTE
9 GatherNode COOR 526577 - GATHER
4 ReturnNode COOR 526577 - RETURN title
但在使用的情况下,的两个都由V8(JavaScript)处理,并在协调器上运行,而不是在DBS上运行:
Execution plan:
Id NodeType Site Est. Comment
1 SingletonNode COOR 1 * ROOT
2 CalculationNode COOR 1 - LET #2 = FULLTEXT(pmshort /* all collection documents */, "TITL", "parkinson") /* v8 expression */
3 EnumerateListNode COOR 100 - FOR title IN #2 /* list iteration */
10 ScatterNode COOR 100 - SCATTER
11 RemoteNode DBS 100 - REMOTE
9 IndexNode DBS 52657700 - FOR word IN pmshort /* fulltext index scan */
6 CalculationNode DBS 52657700 - LET #6 = (title.`ID` == word.`ID`) /* simple expression */ /* collections used: word : pmshort */
7 FilterNode DBS 52657700 - FILTER #6
12 RemoteNode COOR 52657700 - REMOTE
13 GatherNode COOR 52657700 - GATHER
8 ReturnNode COOR 52657700 - RETURN title
当然,这会大大降低系统的速度。
因此,我的问题是:
1.为什么ArangoDb集群不能在DBS上处理这两个条件,而不能在协调器(COOR)上处理?
2.性能下降300-500倍,如何避免这种情况?
3.也许有人可以指出一些额外的材料来阅读
感谢您的帮助。
谢谢 在每个查询/子查询中应用了一个全文转换后,查询优化器似乎不再寻找进一步的全文改进
可以在(目标为3.3.10)中找到此问题的潜在解决方案。在每个查询/子查询中应用一个全文转换后,查询优化器似乎不再寻求进一步的全文改进
可以在(目标为3.3.10)中找到此问题的潜在解决方案。非常感谢!
它应该在3.3.10和未来的3.4版本中提供,对吗?非常感谢!
它应该在3.3.10和未来的3.4中提供,对吗?确切地说,它将在3.3.10和3.4中提供。确切地说,它将在3.3.10和3.4中提供