用java解析文本文件(大数据集)
我有一个文本文件,每一行如下所示: (电影评论数据库) 我要分析此文件以便检索:用java解析文本文件(大数据集),java,parsing,inputstream,Java,Parsing,Inputstream,我有一个文本文件,每一行如下所示: (电影评论数据库) 我要分析此文件以便检索: 产品/产品ID 审查/用户ID 查看/配置文件名 回顾/帮助 复习/评分 回顾/时间 审查/总结 审查/文本 稍后将使用MovieReview和Movie类封装此信息 public class MovieReview { private Movie movie; private String userId; private String profileName; private
- 产品/产品ID
- 审查/用户ID
- 查看/配置文件名
- 回顾/帮助
- 复习/评分
- 回顾/时间
- 审查/总结
- 审查/文本
MovieReview
和Movie
类封装此信息
public class MovieReview {
private Movie movie;
private String userId;
private String profileName;
private String helpfulness;
private Date timestamp;
private String summary;
private String review;
...
任何人都能提供一种正确有效的方法来解析这个文件(大数据集)吗
谢谢。如果它是一个大数据集,您应该避免将整个列表一次加载到内存中。我可能会为每一行使用一个处理程序来解决这个问题
public interface MovieReviewHandler {
void handle(MovieReview revies);
}
然后可以按如下方式进行分析:
public class MovieReviewParser {
public void parse(BufferedReader reader, MovieReviewHandler handler) {
Pattern regex = Pattern.compile("product/productId:(.*)review/userId:(.*)review/profileName:(.*)"); // add other fields
String line;
while ((line = reader.readLine()) != null) {
Matcher matcher = regex.matcher(line);
if (!matcher.matches()) throw new RuntimeException();
MovieReview review = new MovieReview();
review.productId = matcher.group(1);
review.userId = matcher.group(2);
review.profileName = matcher.group(3);
// etc
handler.handle(review);
}
}
}
如果它是一个大数据集,您将希望避免将整个列表一次加载到内存中。我可能会为每一行使用一个处理程序来解决这个问题
public interface MovieReviewHandler {
void handle(MovieReview revies);
}
然后可以按如下方式进行分析:
public class MovieReviewParser {
public void parse(BufferedReader reader, MovieReviewHandler handler) {
Pattern regex = Pattern.compile("product/productId:(.*)review/userId:(.*)review/profileName:(.*)"); // add other fields
String line;
while ((line = reader.readLine()) != null) {
Matcher matcher = regex.matcher(line);
if (!matcher.matches()) throw new RuntimeException();
MovieReview review = new MovieReview();
review.productId = matcher.group(1);
review.userId = matcher.group(2);
review.profileName = matcher.group(3);
// etc
handler.handle(review);
}
}
}
您如何处理评论文本中出现的字符串“review/text:”?这与解析相关。如果根本不进行处理,如果用户有创造性,您的应用程序可能随时会失败。我假设“review/text:”不会出现在文本上。您如何处理字符串“review/text:”在评论文本中的出现?这与解析相关。如果它根本不被处理,你的应用程序在任何时候都可能失败,如果用户有创造性的话。我假设文本上不会出现“review/text:”。