如标题所示,我有一个代码可以对文本挖掘进行标记,停止和阻止..但代码只能处理我给出的单词"字符串结果" line ..如果我想输入数据库中的数据怎么办?然后结果保存在其他数据库中..
class TokenizeStopStem
{
private Set<String> stop_word_set;
public TokenizeStopStem(){
BufferedReader fileStream = null;
try {
stop_word_set = new HashSet<String>();
String path = "E:\\stopwords.txt";
File file = new File(path);
fileStream = new BufferedReader(new FileReader(file));
String kata;
while ( ( kata = fileStream.readLine() ) != null)
stop_word_set.add(kata);
} catch (Exception ex) {
Logger.getLogger(TokenizeStopStem.class.getName()).log(Level.SEVERE, null, ex);
}
String result = tokenizeStopStem("Coba kalo yang ini mau bermain gimana jadinya kegantengan");
System.out.println(result);
}
public static void main(String[] args) {
new TokenizeStopStem();
}
private String tokenizeStopStem(String input) {
TokenStream tokenStream = new StandardTokenizer(
Version.LUCENE_36, new StringReader(input));
tokenStream = new StopFilter(Version.LUCENE_36, tokenStream, stop_word_set);
tokenStream = new IndonesianStemFilter(tokenStream);
StringBuilder sb = new StringBuilder();
OffsetAttribute offsetAttribute = tokenStream.addAttribute(OffsetAttribute.class);
CharTermAttribute charTermAttr = tokenStream.getAttribute(CharTermAttribute.class);
try{
while (tokenStream.incrementToken()) {
if (sb.length() > 0) {
sb.append(" ");
}
sb.append(charTermAttr.toString());
}
}
catch (IOException e){
System.out.println(e.getMessage());
}
return sb.toString();
}
答案 0 :(得分:1)
你应该更换你的&#34; Coba kalo&#34;带有返回名为loadRawData()
的字符串的方法的字符串。 loadRawData
可能看起来像这样:
private String loadRawData(String id) throws SQLException
{
Connection con = getSourceConnection();
Statement stmt = null;
String query = "select data from table where id='" + id + "'";
String rawData = null;
try {
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
if (rs.next()) {
rawData = rs.getString("data");
}
} finally {
if (stmt != null) { stmt.close(); }
}
return rawData;
}
它调用getSourceConnection()
,它创建一个指向数据库的Connection实例,您将在其中检索数据。 See here for how to establish a connection。 &#34; id&#34;传入的大概是一种唯一标识您的记录的方法,实际上,如果找到则返回的数据将是在列&#34;数据&#34;中找到的数据。如果没有错误,但没有找到记录,它将返回null,因此您应该为这种可能性做好准备。
你应该用try ... catch来包围这个电话,这样你就可以应对突发问题。
如果一切顺利,并且你有结果,你应该将结果传递给一个名为saveTokenData
的方法传递字符串。遗憾的是,我无法知道您希望如何保存此信息,因此我无法输入详细信息,但是您会发现代码与上面的代码非常相似,只是您可以调用getDestinationConnection()
来代替getSourceConnection()
的{{1}},您将使用更新查询而不是executeUpdate
来调用executeQuery
。
这样可以解决问题,但是,您应该考虑使用线程来执行此操作。这将大大提高该程序的效率,但是,它也会使其复杂化。我的建议是首先让它运行,然后你可以尝试使用线程。
希望有所帮助!