邮件信息抽取
抽取目的
将elasticsearch上的邮件信息存入SQL数据库中,方便以后更好的调用
抽取目标
elasticsearch中的邮件
预期抽取结果
SQL数据库中的特征信息
抽取步骤
-
文件(邮件)转化为可读信息(如:String)
-
将可读信息利用正则化抽取出所需属性
-
抽取出的属性与PO对象一一对应(若无,则插入NULL)
-
@Mapper将PO对象存入数据库
-
注意事项:
- 接收者或者抄送者可能存在多人
- 附件存储(存储地址信息,本地与线上还不同)
关键代码
private static String readString4()
{
int len=0;
StringBuffer str=new StringBuffer("");
File file=new File(FILE_IN);
try {
FileInputStream is=new FileInputStream(file);
InputStreamReader isr= new InputStreamReader(is);
BufferedReader in= new BufferedReader(isr);
String line=null;
while( (line=in.readLine())!=null )
{
if(len != 0) // 处理换行符的问题
{
str.append("\r\n"+line);
}
else
{
str.append(line);
}
len++;
}
in.close();
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str.toString();
}
//该集合存储数据库中所需的属性信息,且与PO实体类中的对象一一对应
List<String> result = new ArrayList<~>();
//正则化:以”From:"开始,直到第一次出现”回车“结束
String reg = "From:(.*?)\r"
//"str"为可读(邮件)信息
m = Pattern.compile(reg).matcher(str)
if (m.find()){
String r = m.group();
result.add(r);
}else{
//如果未正则匹配到该条数据,仍插入”null“
result.add(null);
}
extends BaseMapper<EmailRecordPO>
-
创建PO实体类的对象,并用setXXX函数一一导入上述取到的属性信息
-
emailRecordMapper.insert(emailRecordPO);
即可