Skip to content

基于Java与Elasticsearch引擎提供的AI绘图中文Tag检索服务端系统

Notifications You must be signed in to change notification settings

AiPreface/ai-tags-es-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aiTags-es-server

基于java与elasticsearch引擎提供的ai绘图中文tag检索系统

运行环境

版本依赖

elasticsearch版本:7.12.1

java:jdk17

搜索引擎IP地址以及指定索引库

在main目录的application.yaml中更改

索引库创建表以及索引文档

在项目test目录

test中有批量导入的测试方法

注意:导入前请提前转换为 中文=英文 形式的properties文件

为提升检索吻合度,请装载elasticsearch引擎的ik分词器插件,并导入一份只留有中文的分词文档

索引文档将持续整理更新

接口以及参数传递

精准查询

请求方式:Get

请求地址:/index/termTags

请求参数:chineseTags 中文字符串 单条直接传,多条查询请用 , 分隔

返回体:

单条查询

[
  "cat_ears"
]

多条查询

[
  "cat_ears",
  "dog_ears"
]

模糊查询

请求方式:Get

请求地址:/index/matchTags

请求参数:chineseTags 中文字符串

返回体:

[
  "dog_ears",
  "day",
  "cat_ears"
]

相关度检索

请求方式:Get

请求地址:/index/listTags

请求参数:chineseTags 中文字符串

返回体:

{
  "狗耳": "dog_ears",
  "猫耳": "cat_ears",
  "白天": "day"
}

暂未实现功能**[需要网页端]**

1.根据用户输入内容搜索框动态展示联想tags

2.待定...

3.待定..

目前存在的问题以及方案:

​ es引擎的ik分词器在分词时会使用粗粒度分词和细粒度分词的两种规则,如果导入文档时使用细粒度分词,查询时使用粗粒度分词,虽然能得到全部想要的词缀,但也会生成一些意想不到的tag

​ 而如果全部使用粗粒度分词,虽然保证了查询的可靠性,但搜索tags难度会增加,需要高匹配的情况下才能搜到;全部使用细粒度的话,查询的内容会杂乱不堪,这对于用户体验来讲将是一个灾难

​ 为解决这个问题,我不得不把索引库拆成两份用不同的规则实现,在精准查询(这个其实不受影响)和模糊查询时,导入文档和查询tags全部使用粗粒度分词,这样如果想直接对接ai绘图的接口话tag吻合度会更好; ​ 使用列表查询时,导入文档使用细粒度分词,查询tags使用粗粒度分词,这样会展示出所有具有相关性的tags

About

基于Java与Elasticsearch引擎提供的AI绘图中文Tag检索服务端系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages