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



我分别阅读了cts:search()search:search(),但无法找出它们之间的确切区别。它说cts:search()最终使用search:search()。有没有人可以详细说明cts:search()search:search()应该去的场景。这与我需要实现这个的一些特定项目工作无关,但总的来说。

谢谢!

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

一般来说,我建议从搜索API开始。我们投入了大量的精力来确保它的健壮和快速。例如,在进行分面搜索时,它协调了从范围索引获取搜索结果和计算分面的并行过程。还有许多其他的使用Search API的便利和最佳实践的例子。如果您需要做一些比Search API提供的更多或不同的事情,那么有几个地方允许您使用低级cts:query实例。例如,search:resolve()接受cts:query,并调用search:search()的等价对象。

同样,对于那些在服务器端JavaScript工作的人来说,即将发布的8.0-4版本将引入一个类似的专门为JavaScript设计的高级库。

同样值得一提的是:

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

HTH !