搜索文件的最佳方法

时间:2015-12-09 18:49:07

标签: java algorithm file search

我有一个文件如下:

4 abiogenezele
5 abiogenezelor
6 acefaliile
7 acefaliilor
8 acetonuriile
....

它具有格式(ID_WORD WORD)并具有aproxim。 ~33000字。

我想输入一个单词来查找他的ID。

我试试这段代码。它有效,但效率不高。

int ID;
String word = "acefaliile";
String pattern = "(?i)([\\d]+) ("+word+")";
Pattern r = Pattern.compile(pattern);
boolean found = false;

// Read the file
try (BufferedReader br = new BufferedReader(new FileReader("./resources/txt/lemma.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        Matcher m = r.matcher(line);

        if (m.find( )) {
            // m.group(1) is ID
            // m.group(2) is WORD
            ID = Integer.parseInt(m.group(1));
            found=true;
            break;
        }
    }

    if(!found) {
        ID = 0;
    }
}

2 个答案:

答案 0 :(得分:1)

  • 将文件加载到内存中。
  • 按空格划分行数(第一个空格,如果'单词'可以包含空格)
  • 将数据加载到地图(字典)数据结构(Java中的HashMap?)中,将word作为键,将id作为值。
  • 在此地图中进行搜索。

替代方法 - 将这些键/值对放在数组或列表中,对其进行排序,并使用二进制搜索。

答案 1 :(得分:0)

您可以将Lookeen用作file search程序!此工具会自动搜索文件内容,并且您有很多过滤选项。

免责声明:我为Lookeen的开发人员工作。