Skip to content

Latest commit

 

History

History
424 lines (350 loc) · 10.7 KB

api.md

File metadata and controls

424 lines (350 loc) · 10.7 KB

API

gofound启动之后,会监听一个TCP端口,接收来自客户端的搜索请求。处理http请求部分使用gin框架。

多数据库支持

从1.1版本开始,我们支持了多数据库,API接口中通过get参数来指定数据库。

如果不指定,默认数据库为default

如:api/index?database=db1 其他post参数不变

如果指定的数据库名没有存在,将会自动创建一个新的数据库。如果需要删除,直接删除改数据库目录,然后重启gofound即可。

增加/修改索引

需要在query参数中指定数据库名database=default

接口地址 /api/index
请求方式 POST
请求类型 application/json

请求

字段 类型 必选 描述
id uint32 文档的主键id,需要保持唯一性,如果id重复,将会覆盖直接的文档。
text string 需要索引的文本块
document object 附带的文档数据,json格式,搜索的时候原样返回

query参数(params-data)

字段 类型 必选 描述
database string 指定数据库名
  • POST /api/index
{
  "id": 88888,
  "text": "深圳北站",
  "document": {
    "title": "阿森松岛所445",
    "number": 223
  }
}
  • 命令行
curl -H "Content-Type:application/json" -X POST --data '{"id":88888,"text":"深圳北站","document":{"title":"阿森松岛所445","number":223}}' http://127.0.0.1:5678/api/index?database=default

响应

{
  "state": true,
  "message": "success"
}

批量增加/修改索引

与添加单个索引一样,也需要在query参数中指定数据库名database=default

接口地址 /api/index/batch
请求方式 POST
请求类型 application/json

参数与单个一致,只是需要用数组包裹多个json对象,例如:

[
  {
    "id": 88888,
    "text": "深圳北站",
    "document": {
      "title": "阿森松岛所445",
      "number": 223
    }
  },
  {
    "id": 22222,
    "text": "北京东站",
    "document": {
      "title": "123123123",
      "number": 123123
    }
  }
]

删除索引

与以上接口一样,也需要在query参数中指定数据库名database=default

接口地址 /api/index/remove
请求方式 POST
请求类型 application/json

请求

字段 类型 必选 描述
id uint32 文档的主键id
  • POST /api/remove
{
  "id": 88888
}
  • 命令行
curl -H "Content-Type:application/json" -X POST --data '{"id":88888}' http://127.0.0.1:5678/api/remove?database=default

响应

{
  "state": true,
  "message": "success"
}

查询索引

GoFound提供了一种查询方式,按照文本查询。与其他Nosql数据库不同,GoFound不支持按照文档的其他查询。

接口地址 /api/query
请求方式 POST
请求类型 application/json

请求

字段 类型 必选 描述
query string 查询的关键词,都是or匹配
page int 页码,默认为1
limit int 返回的文档数量,默认为100,没有最大限制,最好不要超过1000,超过之后速度会比较慢,内存占用会比较多
order string 排序方式,取值ascdesc,默认为desc,按id排序,然后根据结果得分排序
highlight object 关键字高亮,相对text字段中的文本
scoreExp string 根据文档的字段计算分数,然后再进行排序,例如:score+[document.hot]*10,表达式中score为关键字的分数,document.hot为document中的hot字段

query参数(params-data)

字段 类型 必选 描述
database string 指定数据库名,不填默认为default

highlight

配置以后,符合条件的关键词将会被preTag和postTag包裹

字段 描述
preTag 关键词前缀
postTag 关键词后缀
  • 示例
{
  "query": "上海哪里好玩",
  "page": 1,
  "limit": 10,
  "order": "desc",
  "highlight": {
    "preTag": "<span style='color:red'>",
    "postTag": "</span>"
  }
}
  • POST /api/query
{
  "query": "深圳北站",
  "page": 1,
  "limit": 10,
  "order": "desc"
}
  • 命令行
curl -H "Content-Type:application/json" -X POST --data '{"query":"深圳北站","page":1,"limit":10,"order":"desc"}' http://127.0.0.1:5678/api/query

响应

字段 类型 描述
time float32 搜索文档用时
total int 符合条件的数量
pageCount int 页总数
page int 当前页码
limit int 每页数量
documents array 文档列表,参考索引文档
{
  "state": true,
  "message": "success",
  "data": {
    "time": 2.75375,
    "total": 13487,
    "pageCount": 1340,
    "page": 1,
    "limit": 10,
    "documents": [
      {
        "id": 1675269553,
        "text": "【深圳消费卡/购物券转让/求购信息】- 深圳赶集网",
        "document": {
          "id": "8c68e948de7c7eb4362de15434a3ace7",
          "title": "【深圳消费卡/购物券转让/求购信息】- 深圳赶集网"
        },
        "score": 3
      },
      {
        "id": 88888,
        "text": "深圳北站",
        "document": {
          "number": 223,
          "title": "阿森松岛所445"
        },
        "score": 2
      },
      {
        "id": 212645608,
        "text": "【深圳美容美发卡转让/深圳美容美发卡求购信息】- 深圳赶集网",
        "document": {
          "id": "d3ce16b68a90833cbc20b8a49e93b9cd",
          "title": "【深圳美容美发卡转让/深圳美容美发卡求购信息】- 深圳赶集网"
        },
        "score": 1.5
      },
      {
        "id": 1191140208,
        "text": "【深圳赶集网】-免费发布信息-深圳分类信息门户",
        "document": {
          "id": "44be60a1d8b54c431e5511804062ae62",
          "title": "【深圳赶集网】-免费发布信息-深圳分类信息门户"
        },
        "score": 1.5
      },
      {
        "id": 4133884907,
        "text": "【深圳购物卡转让/深圳购物卡求购信息】- 深圳赶集网",
        "document": {
          "id": "f25bb8136e8c2b02e3fcd65627a9ddbc",
          "title": "【深圳购物卡转让/深圳购物卡求购信息】- 深圳赶集网"
        },
        "score": 1
      },
      {
        "id": 206909132,
        "text": "【沙嘴门票/电影票转让/求购信息】- 深圳赶集网",
        "document": {
          "id": "63ca3ea4ffd254454e738a0957efedc2",
          "title": "【沙嘴门票/电影票转让/求购信息】- 深圳赶集网"
        },
        "score": 1
      },
      {
        "id": 220071473,
        "text": "【深圳健身卡转让/深圳健身卡求购信息】- 深圳赶集网",
        "document": {
          "id": "72d3d650c8a8a4e73b89b406f6dc76ef",
          "title": "【深圳健身卡转让/深圳健身卡求购信息】- 深圳赶集网"
        },
        "score": 1
      },
      {
        "id": 461974720,
        "text": "铁路_论坛_深圳热线",
        "document": {
          "id": "73c96ac2c23bc0cb4fb12ce7660c8b35",
          "title": "铁路_论坛_深圳热线"
        },
        "score": 1
      },
      {
        "id": 490922879,
        "text": "【深圳购物卡转让/深圳购物卡求购信息】- 深圳赶集网",
        "document": {
          "id": "93be0f35c484ddcd8c83602e27535d96",
          "title": "【深圳购物卡转让/深圳购物卡求购信息】- 深圳赶集网"
        },
        "score": 1
      },
      {
        "id": 525810194,
        "text": "【深圳购物卡转让/深圳购物卡求购信息】- 深圳赶集网",
        "document": {
          "id": "e489dd19dce0de2c9f4e59c969ec9ec0",
          "title": "【深圳购物卡转让/深圳购物卡求购信息】- 深圳赶集网"
        },
        "score": 1
      }
    ],
    "words": [
      "深圳",
      "北站"
    ]
  }
}

查询状态

接口地址 /api/status
请求方式 GET

请求

curl http://127.0.0.1:5678/api/status

响应

{
  "state": true,
  "message": "success",
  "data": {
    "index": {
      "queue": 0,
      "shard": 10,
      "size": 531971
    },
    "memory": {
      "alloc": 1824664656,
      "heap": 1824664656,
      "heap_idle": 10008625152,
      "heap_inuse": 2100068352,
      "heap_objects": 3188213,
      "heap_released": 9252003840,
      "heap_sys": 12108693504,
      "sys": 12700504512,
      "total": 11225144273040
    },
    "status": "ok",
    "system": {
      "arch": "arm64",
      "cores": 10,
      "os": "darwin",
      "version": "go1.18"
    }
  }
}

删除数据库

接口地址 /api/db/drop
请求方式 GET

请求

curl http://127.0.0.1:5678/api/drop?database=db_name

响应

{
  "state": true,
  "message": "success"
}

在线分词

接口地址 /api/word/cut
请求方式 GET

请求参数

字段 类型 必选 描述
q string 关键词

请求

curl http://127.0.0.1:5678/api/word/cut?q=上海和深圳哪个城市幸福指数高

响应

{
  "state": true,
  "message": "success",
  "data": [
    "上海",
    "深圳",
    "哪个",
    "城市",
    "幸福",
    "指数"
  ]
}