全文搜索 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"
直到返回结果为空。