全文搜索 REST API
全文搜索服务提供以下 REST API 接口:
| URL | HTTP | 功能 | 
|---|---|---|
| /1.1/search/select | GET | 条件查询 | 
| /1.1/search/mlt | GET | moreLikeThis 相关性查询 | 
| /1.1/search/analyze | GET | 分词结果查询 | 
在调用全文搜索的 REST API 接口前,需要首先为相应的 Class 启用搜索。 另外也请参考数据存储 REST API 使用详解中关于 API Base URL、请求格式、响应格式的说明,以及《全文搜索指南》的《自定义分词》章节。
条件查询
GET /1.1/search/select REST API 接口提供全文搜索功能。
curl -X GET \
  -H "X-LC-Id: {{appid}}" \
  -H "X-LC-Key: {{appkey}}" \
  "https://{{host}}/1.1/search/select?q=dennis&limit=200&clazz=GameScore&order=-score"
返回类似:
{
  "hits": 1,
  "results": [
    {
      "_app_url": "http://stg.pass.com//1/go/com.leancloud/classes/GameScore/51e3a334e4b0b3eb44adbe1a",
      "_deeplink": "com.leancloud.appSearchTest://leancloud/classes/GameScore/51e3a334e4b0b3eb44adbe1a",
      "_highlight": null,
      "updatedAt": "2011-08-20T02:06:57.931Z",
      "playerName": "Sean Plott",
      "objectId": "51e3a334e4b0b3eb44adbe1a",
      "createdAt": "2011-08-20T02:06:57.931Z",
      "cheatMode": false,
      "score": 1337
    }
  ],
  "sid": "cXVlcnlUaGVuRmV0Y2g7Mzs0NDpWX0NFUmFjY1JtMnpaRDFrNUlBcTNnOzQzOlZfQ0VSYWNjUm0yelpEMWs1SUFxM2c7NDU6Vl9DRVJhY2NSbTJ6WkQxazVJQXEzZzswOw=="
}
查询的参数支持:
| 参数 | 约束 | 说明 | 
|---|---|---|
q | 必须 | 查询文本,支持 Elasticsearch 的 query string 语法。参见 q 查询语法。 | 
skip | 可选 | 跳过的文档数目,默认为 0。 | 
limit | 可选 | 返回集合大小,默认 100,最大 1000。 | 
sid | 可选 | 之前查询结果中返回的 sid 值,用于分页,对应于 Elasticsearch 中的 scroll id。 | 
fields | 可选 | 逗号隔开的字段列表,查询的字段列表。 | 
highlights | 可选 | 高亮字段,可以是通配符 *,也可以是字段列表(逗号隔开的字符串)。 | 
clazz | 可选 | 类名,如果没有指定或者为空字符串,则搜索所有启用了全文搜索的 class。 | 
include | 可选 | 关联查询内联的 Pointer 字段列表,逗号隔开,形如 user,comment 的字符串。仅支持 include Pointer 类型。 | 
order | 可选 | 排序字段,形如 -score,createdAt 逗号隔开的字段,负号表示倒序,可以多个字段组合排序。 | 
sort | 可选 | 复杂排序字段,例如地理位置信息排序,见下文描述。 | 
返回结果属性介绍:
results:符合查询条件的结果文档。hits:符合查询条件的文档总数sid:标记本次查询结果,下次查询继续传入这个 sid 用于查找后续的数据,用来支持翻页查询。
返回结果 results 列表里是一个一个的对象,字段是你在全文搜索设置里启用的字段列表,并且有三个特殊字段:
_app_url:全文搜索结果在网站上的链接。_deeplink:全文搜索的程序调用 URL,也就是 deeplink。_highlight:高亮的搜索结果内容,关键字用em标签括起来。如 果搜索时未传入highlights参数,则该字段为 null。
最外层的 sid 用来标记本次查询结果,下次查询继续传入这个 sid 将翻页查找后 200 条数据:
curl -X GET \
  -H "X-LC-Id: {{appid}}" \
  -H "X-LC-Key: {{appkey}}" \
  "https://{{host}}/1.1/search/select?q=dennis&limit=200&clazz=GameScore&order=-score&sid=cXVlcnlUaGVuRmV0Y2g7Mzs0NDpWX0NFUmFjY1JtMnpaRDFrNUlBcTNnOzQzOlZfQ0VSYWNjUm0yelpEMWs1SUFxM2c7NDU6Vl9DRVJhY2NSbTJ6WkQxazVJQXEzZzswOw"
直到返回结果为空。