涉及ArangoDb集群上的两个全文搜索: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

我正在调查ArangoDb集群,发现在使用两个FULLTEXT()搜索的情况下,其中一个涉及V8引擎。 我的数据:

[
{
"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中提供