从数据库输入数据并处理它

时间:2014-06-04 08:48:15

标签: java text-mining

如标题所示,我有一个代码可以对文本挖掘进行标记,停止和阻止..但代码只能处理我给出的单词"字符串结果" 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();
}

1 个答案:

答案 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

这样可以解决问题,但是,您应该考虑使用线程来执行此操作。这将大大提高该程序的效率,但是,它也会使其复杂化。我的建议是首先让它运行,然后你可以尝试使用线程。

希望有所帮助!

Reference for retrieving data from a database using JDBC.