, поэтому я работаю над этим небольшим проектом, чтобы создать индекс для 1400 корпусов файлов, а затем искать ключевые слова с помощью индекса.индекс должен иметь частоту ключевого слова и его позицию «имя файла».Выходные данные должны быть в десятке релевантных документов в соответствии с частотой ключевого слова в каждом.
Например: flower text1.txt 3 flower text2.txt 2.,это то, что у меня есть, и у меня возникли проблемы с кортежем, поскольку я хочу добавить 3 значения в хэш-карту
import java.io.*;
import java.nio.charset.*;
import java.nio.file.*;
import java.util.*;
public class MyIndex {
static Map<String, Tuple<Integer, String>> map = new HashMap();
static String readFile(String path, Charset encoding) throws IOException {
byte[] encoded = Files.readAllBytes(Paths.get(path));
return new String(encoded, encoding);
}
public static void main (String [] args) throws IOException {
File myDirectory = new File(
"/Users/.../processedFiles");
File[] fileList = myDirectory.listFiles();
for(int i = 1;i<fileList.length;i++) {
Scanner scan = new Scanner (new File(fileList[i].getPath()));
while(scan.hasNextLine()) {
String line = scan.nextLine();
map.put(line, new Tuple (1,fileList[i].getName())); //tuple is frequency of word and file name
}
}
}
public class Tuple<X, Y> {
public final X x;
public final Y y;
public Tuple(X x, Y y) {
this.x = x;
this.y = y;
}
}
}
ошибка введена (...)
Я еще не добавил частотный метод, и это то, что я имею до сих пор
static void frequency(String [] array) {
Map<String, Integer> map = new HashMap<String, Integer>();
for (String string : array) {
int count = 0;
if (!map.containsKey(string)) {
map.put(string, 1);
}
else {
count = map.get(string);
map.put(string, count + 1);
}
}
есть лучший способ сделать это с нуля, так как мы не можем использовать люцен и т. Д... как собрать все вместе, чтобы прочитать и проиндексировать 1400 файлов с помощью класса Tuple?Я открыт для любых предложений, спасибо