我正在创建一个应用程序,允许用户申请职位并上传他们的简历。我目前正试图为管理员创建一个搜索框,以便能够搜索关键字。应用程序将查看所有CV,如果找到这样的关键字,它将显示包含关键字的Cv列表。我对Gui设计和应用程序创建相当新,所以不确定如何去做。我希望通过java完成它并使用Eclipse Window构建器来帮助我设计它。任何帮助将不胜感激,提示,建议任何事情。谢谢。
答案 0 :(得分:0)
嗯,这种不正确的设计方法,因为在给定文件夹的所有文件中对单词进行实时搜索将是缓慢的,并且从长远来看是不可持续的。理想情况下,您应该为关键字编制所有CV的索引。搜索应该在索引上运行,然后获取该索引的关联CV(考虑类似于标记的索引)。索引有很多选项 - 简单数据库索引或使用Apache Lucene,或者按照这些步骤使用Maps创建索引并引用此索引进行搜索。
创建地图Map<String, List<File>>
以保持关联
关键字到文件
遍历所有文件,并对每个单词进行迭代 每个文件,将该文件添加到与该单词对应的列表中 你的索引图
这里有适合您的java代码,但我仍然建议您更改设计方法并使用索引。
File dir = new File("Folder for CV's");
if(dir.exists())
{
Pattern p = Pattern.compile("Java");
ArrayList<String> list = new ArrayList<String>(); // list of CV's
for(File f : dir.listFiles())
{
if(!f.isFile()) continue;
try
{
FileInputStream fis = new FileInputStream(f);
byte[] data = new byte[fis.available()];
fis.read(data);
String text = new String(data);
Matcher m = p.matcher(text);
if(m.find())
{
list.add(f.getName()); // add file to found-keyword list.
}
fis.close();
}
catch(Exception e)
{
System.out.print("\n\t Error processing file : "+f.getName());
}
}
System.out.print("\n\t List : "+list); // list of files containing keyword.
} // IF directory exists then only process.
else
{
System.out.print("\n Directory doesn't exist.");
}
在这里,您将获得要立即显示的文件列表&#34; Java&#34;。正如我所说的使用索引:)
答案 1 :(得分:0)
感谢您抽出宝贵时间来研究我的问题。 我实际上想出了一个自己的解决方案。它可能非常业余,但它适用于我。
JButton btnSearch = new JButton("Search");
btnSearch.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
list.clear();
String s = SearchBox.getText();
int i = 0,present = 0;
int id;
try
{
Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(url+dbName,userName,password);
Statement st = conn.createStatement();
ResultSet res = st.executeQuery("SELECT * FROM javaapp.test");
while(res.next())
{
i = 0;
present = 0;
while(i < 9)
{
String out = res.getString(search[i]);
if(out.toLowerCase().contains(s.toLowerCase()))
{
present = 1;
break;
}
i++;
}
if(tglbtnNormalshortlist.isSelected())
{
if(present == 1 && res.getInt("Shortlist") == 1)
{
id = res.getInt("Candidate");
String print = res.getString("Name");
list.addElement(print+" "+id);
}
}
else
{
if(present == 1 && res.getInt("Shortlist") == 0)
{
id = res.getInt("Candidate");
String print = res.getString("Name");
list.addElement(print+" "+id);
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
});