一、在ES中创建附件过滤器
他是一个插件,会自动转换上传的文件
put http://localhost:9200/_ingest/pipeline/attachment
输入参数:
{
"description": "解析附件文档",
"processors": [
{
"attachment": {"field": "data", "ignore_missing": true}
},
{
"remove": {"field": "data"}
}
]}
返回结果:
{
"acknowledged": true
}
二、引用检索模块
<dependency>
<groupId>com.xinyuan</groupId>
<artifactId>eps-search-common</artifactId>
<version>2.2.1-SNAPSHOT</version>
</dependency>
三、系统配置ES地址参数
eps:
search:
cluster_nodes: 193.193.193.28:9200 // 可修改成自己的地址
四、创建全文索引(表),业务用
注意:该操作仅初始化执行一次,和数据库表类似。
@Autowired
FullTextSearchHelper searchHelper;
// 创建索引
boolean res = searchHelper.createIndex(null, com.xinyuan.search.common.Constants.TOKEN_TYPE_SMART);
if(res){
return ReturnValue.newSuccessInstance("创建索引成功");
} else {
return ReturnValue.newErrorInstance("创建索引失败或者已经存在");
}
// 删除索引
searchHelper.removeIndex(null);
五、写入项目数据(不包含文件),业务用
业务尚未确定,参数变动中。。。
@Autowired
FullTextSearchHelper searchHelper;
/**
* 业务调用写入一个项目信息
* @param xmid 项目id
* @param tymb_id 通用模板id
* @param params 项目其他参数
* @throws Exception
*/
searchHelper.putOneXmInfo(String xmid, String tymb_id, Map<String, Object> params);
/**
* 业务调用写入一个文件信息
* @param xmid 项目id
* @param xmname 项目名称
* @param fileGroupId 文件标识
* @throws Exception
*/
searchHelper.putOneXmInfoFile(String xmid, String xmname, String fileGroupId);
六、获取给定文件的分词集合(特定)
1、先创建测试表
@Autowired
FullTextSearchHelper searchHelper;
// 创建测试索引
boolean res = searchHelper.createSimpleIndex(Constants.TOKEN_TYPE_SMART);
if(res){
return ReturnValue.newSuccessInstance("创建索引成功");
} else {
return ReturnValue.newErrorInstance("创建索引失败或者已经存在");
}
// 删除简单索引
searchHelper.removeSimpleIndex();
2、写入数据并直接返回结果
String file = "F:/技术资料/汽车产业链全景图—乘用车篇.pdf";
try{
String fileContent = FullTextUtils.getFileBase64Value(file);
List<String> list = searchHelper.putFileAndAcquireTokenList("file", fileContent);
ReturnValue<List<String>> rv = ReturnValue.newSuccessInstance("测试【分词】数据写入成功");
rv.setData(list);
return rv;
} catch (Exception e){
e.printStackTrace();
return ReturnValue.newErrorInstance("测试【分词】数据写入失败:" + e.getMessage());
}