在ArangoDB中,search和filter是两种不同的查询选项,它们适用于不同的查询场景。
使用filter关键字时,查询结果集由文档集合的子集组成,这些文档符合指定的筛选条件。筛选条件是使用标准AQL语法指定的。
下面是一个使用filter关键字的示例:
FOR doc IN collection
FILTER doc.attribute == "value"
RETURN doc
这个查询将返回集合中符合条件“attribute等于'value'”的所有文档。筛选条件可以是任何有效的AQL表达式。
search关键字用于执行全文搜索操作,并将结果作为一个文档集合返回。在这种情况下,查询结果集不是集合中的子集,而是通过全文搜索引擎生成的结果。
下面是一个使用search关键字的示例:
FOR doc IN collection
SEARCH ANALYZER(doc.attribute, "text_en", "text_de")
RETURN doc
在上面的示例中,SEARCH命令将使用指定的分析器("text_en"和"text_de")搜索在“attribute”中找到的文本。如果匹配,则将满足搜索条件的文档返回。
可以看到,search查询中使用了分析器,这在filter查询中是不需要的。除此之外,search和filter之间的区别就不大了。