说明

GoFly框架封装的ZincSearch搜索引擎接口,可以更加方便使用GoFly快速开发框架的朋友,能像数据库ORM操作ZincSearch,这样可统一使用习惯,减少维护成本。

GoFly快速开发框架使用朋友使用ZincSearch步骤:

  1. 安装GoFly快速开发框架企业版,​​去社区下载框架代码​
  2. 登录business管理后台
  3. 找到开发者工具->代码仓,找到“Zinc全文搜索引擎”插件安装
  4. 如果你没有安装ZincSearch,请参考文档的​​安装教程​

做好准备后我们就参考本章文档进行操作。目前与关系数据库如Mysql数据同步,GoFly只提供同步双写方式,如果你的项目业务需要更优同步可以自己完善日志同步,如Mysql的日志binlog同步ZincSearch数据。

操作接口

1.索引操作接口

搜索索引的创建、更新、删除、获取索引列表操作说明。函数调用名为:Index ,通过Index()去调用操作方法。

创建索引

  • 方法:Insert
  • 参数:indexname=索引名称,fields=索引的字段信息(key-value数组)​
  • 代码示例:
res, err := plugin.ZincSearch().Index().Insert("indexname", "fields")

更新索引

  • 方法:Update​
  • 参数:indexname=索引名称,fields=索引的字段信息(key-value数组)
  • 代码示例:
res, err := plugin.ZincSearch().Index().Update("indexname", "fields")

当你尝试更新一个不存在的索引时,它将自动创建一个新的索引。

删除索引

  • 方法:Del​
  • ​参数:indexname=索引名称​
  • 代码示例:
res, err := plugin.ZincSearch().Index().Del("indexname")

获取索引列表

  • 方法:List​
  • 链式属性:Page是设置分页(参数:第一是页码,第二是获取条数),SetShardNum是设置分片数,OrderField是设置排序字段,IsDesc是是否降序排序,FindName是通过名称进行模糊查询。
  • 代码示例:
list, err := plugin.ZincSearch().Index().Page(1, 10).FindName(gf.String(param["name"])).List()

2.文档操作接口

索引文档数据的创建、更新、删除操作方法使用说明,函数调用名为:Doc,通过Doc()去调用操作方法。

创建文档数据

  • 方法:Insert
  • ​参数:indexname=索引名称,data=文档数据​
  • 代码示例:
res, err := plugin.ZincSearch().Doc().Insert("indexname", "data")

更新文档数据

  • 方法:Update​
  • 参数:indexname=索引名称,id=需要修改数据的_id(可传自定义的id值或默认的_id值),data=文档数据​
  • 代码示例:
res, err := plugin.ZincSearch().Doc().Update("indexname","id", "data")

删除文档数据

  • 方法:Insert
  • 参数:indexName是索引名称,id要删除的文档id或_id
  • 代码示例:
res, err := plugin.ZincSearch().Doc().Del("indexname", "id")

3.api接口搜索

ZincSearch的搜索接口,为什么说是ZincSearch的搜索接口呢?这是因为ZincSearch为了兼容Elasticsearch 的API写了一套能兼容api接口。我们在文档中用api接口来表示ZincSearch自己的接口,ES接口类来表示给Elasticsearch兼容api接口。

函数调用名为:Search,通过Search()去调用操作方法。

基础搜索

  • 方法:Base​
  • 参数:seachword=搜索关键词,field=查找字段(单个字段,api/Search不支持多字段),indexname=索引名称
  • 代码示例:
res, err := plugin.ZincSearch().Search().SetForm(0).SetSize(20).Base("seachword", "field", "indexname")

高亮搜索

  • 方法:Highligh​
  • 参数:seachword=搜索关键词,field=查找字段(单个字段,api/Search不支持多字段),indexname=索引名称
  • 代码示例:
res, err := plugin.ZincSearch().Search().SetSize(10).SetFields("title,content").Highligh("seachword", "field", "indexname")

接口通用链式属性

  • SetForm 是开始查询数据,默认值为0
  • SetSize 是设置获取条数,默认值为10
  • SetFields 是设置获取数据字段,默认空​

​4.ES接口搜索

为了兼容Elasticsearch API的搜索接口,方便开发者快速从Elasticsearch 转ZincSearch,为什么说是ZincSearch的搜索接口呢?这是因为ZincSearch为了兼容Elasticsearch 的API写了一套能兼容api接口。我们在文档中用api接口来表示ZincSearch自己的接口,ES接口类来表示给Elasticsearch兼容api接口。

函数调用名为:EsSearch,通过EsSearch()去调用操作方法。

基础搜索

  • 方法:Base​
  • 参数:seachword=搜索关键词,fields=查找字段(多个字段 用逗号分隔),indexname=索引名称
  • 代码示例:
res, err := plugin.ZincSearch().EsSearch().SetForm(0).SetSize(20).Base("seachword", "fields", "indexname")

高亮搜索

  • 方法:Highligh​
  • 参数:seachword=搜索关键词,fields=查找字段(多个字段 用逗号分隔),indexname=索引名称​
  • 代码示例:
res, err := plugin.ZincSearch().EsSearch().SetSize(10).SetFields("title,content").Highligh("seachword", "fields", "indexname")

接口通用链式属性

  • SetForm 是开始查询数据,默认值为0
  • SetSize 是设置获取条数,默认值为10
  • SetFields 是设置获取数据字段,默认空

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐