问题描述
我正在处理以下查询并尝试实现 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/