什么是 RavenDB 中的按内容搜索?

What is search by content in RavenDB?

这是我第一次使用 RavenDB。我无法询问代码的创建者为什么做出某些决定,所以我转向互联网陌生人并希望得到一些善意。

整个代码中有许多搜索查询,它们看起来都像:

query.AndAlso().Search("Content", $"*searchExpression*");

query 是一个 RavenDB IDocumentQuery。 属性 Content 未在正在搜索的文档中定义。

我认为这会搜索文档中的所有属性。不幸的是,我找不到任何关于此的文档,所以我不确定这对性能、安全性和注入攻击有何影响。我什至不确定这是否被积极劝阻。

有人可以阐明这一点吗?即使这只是我 google 搜索的方向,因为“ravendb 内容搜索”并没有 return 很多有用的文章。

编辑:澄清一下,我理解 Search 方法的语法。它需要 属性 进行搜索,然后是正在搜索的表达式。但是我有一个文件

public class Person {
  public string FirstName {get; set;}
  public string LastName {get; set;}
  public DateTime DateOfBirth {get; set;}
}

Search同上。此 Person 文档中没有“内容”属性。然而它确实搜索了一些东西,因为我可以看到文档列表被过滤了。我只是不知道它在过滤什么。

.Search 方法的第一个参数是 属性 选择器
标记应在其中查找术语的文档字段的表达式。

见方法定义:

https://github.com/ravendb/ravendb/blob/904c34a939c35c6375726a57e6eb475086355fa7/src/Raven.Client/Documents/Session/IDocumentQueryBase.cs#L187

您可以在这些测试中看到一个用法示例:

https://github.com/ravendb/ravendb/blob/904c34a939c35c6375726a57e6eb475086355fa7/test/SlowTests/Issues/RavenDB_5669.cs#L17

https://github.com/ravendb/ravendb/blob/904c34a939c35c6375726a57e6eb475086355fa7/test/SlowTests/Issues/RavenDB_5669.cs#L45