search:search() 与 MarkLogic 中的 cts:search()

search:search() vs cts:search() in MarkLogic

我分别阅读了 cts:search()search:search(),但无法弄清楚它们之间的确切区别。它说 cts:search() 最终使用 search:search()。 任何人都可以详细说明应该选择 cts:search()search:search() 的场景。这与我需要实施的某些特定项目工作无关,但总的来说。

谢谢!

搜索 API(例如 search:search())是一个 XQuery 库,它为 MarkLogic 的一些核心功能(例如搜索、构面和聚合)提供高级接口。它在幕后使用较低级别的 cts:*(和其他)库,但将为大多数开发人员节省大量的输入和调试工作。

一般来说,我建议从搜索 API 开始。我们付出了很多努力来确保它的健壮性和快速性。例如,在进行分面搜索时,它会协调获取搜索结果并从范围索引中并行计​​算分面。您可以通过搜索 API 获得开箱即用的便利和最佳实践的许多其他示例。如果您需要做一些比搜索 API 提供的更多或不同的事情,有几个地方允许您使用较低级别的 cts:query 实例。例如,search:resolve() 采用 cts:query 并调用 search:search() 的等价物。

此外,对于那些在 Server-Side JavaScript 工作的人来说,即将发布的 8.0-4 版本将引入一个类似定位的高级库,专为 JavaScript 设计。

另外值得一提的是:

  • Client REST API,基本上将搜索 API 公开为 HTTP 接口
  • Java Client API,它将客户端 REST API 公开为一组方便的 Java 对象和方法
  • Node.js Client API,它将客户端 REST API 公开为一组方便的 Node.js 对象和方法

HTH!