ArangoDB 通配符搜索很慢

问题描述

我正在处理以下查询并尝试实现 arangoDB 通配搜索。条件非常简单,我想匹配类似于名称或数字字段的记录并将记录限制为 25。查询有效但速度非常慢,需要 30 秒以上。目标是优化此查询并使其尽可能接近亚秒级。我希望查询功能类似于 MysqL LIKE 的工作方式,在两侧使用 % 通配符进行匹配。

https://www.arangodb.com/docs/stable/release-notes-new-features37.html#wildcard-search

注意,我注意到的一件事是在发行说明示例中,他们使用的是 SEARCH,而不是 FILTER。

附加信息:

LET str = CONCAT("%",'test','%")
LET search = (
   FOR doc IN name_search
   FILTER ANALYZER(doc.name LIKE str,"text_en") OR
   FILTER ANALYZER(doc.number LIKE str,"text_en")
   LIMIT 25
   RETURN doc
)
RETURN SEARCH

解决方法

FILTER 不使用索引。要加速通配符查询,您必须在集合上创建 ArangoSearch 视图并使用 SEARCH 关键字。

请随时查看以下交互式教程(请参阅“LIKE 支持”部分): https://www.arangodb.com/learn/search/arangosearch-tutorial-3-7/