import java.io.*;
import java.util.*;
public class DataIndexer {
private static final String CONFIG_FILE = "config.txt";
private static final String INDEX_FILE = "index.txt";
private Map<String, List<String>> index = new HashMap<>();
public DataIndexer() {
loadConfiguration();
buildIndex();
}
// Loads the configuration from config.txt
private void loadConfiguration() {
try (BufferedReader reader = new BufferedReader(new FileReader(CONFIG_FILE))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
if (parts.length == 2) {
index.put(parts[0].trim(), Arrays.asList(parts[1].trim().split(" ")));
}
}
} catch (IOException e) {
System.err.println("Error loading configuration: " + e.getMessage());
}
}
// Builds the index based on the configuration
private void buildIndex() {
// In a real application, this would read the user data.
// For this example, we'll simulate data loading.
List<String> data = simulateUserData();
for (String item : data) {
for (Map.Entry<String, List<String>> entry : index.entrySet()) {
if (entry.getKey().contains(item)) { //add if contains
entry.getValue().add(item);
}
}
}
// Write the index to index.txt
try (BufferedWriter writer = new BufferedWriter(new FileWriter(INDEX_FILE))) {
for (Map.Entry<String, List<String>> entry : index.entrySet()) {
writer.write(entry.getKey() + ":" + entry.getValue().toString());
writer.newLine();
}
} catch (IOException e) {
System.err.println("Error writing index: " + e.getMessage());
}
}
private List<String> simulateUserData() {
return Arrays.asList("apple", "banana", "orange", "grapefruit", "apple pie");
}
// Searches the index for a given term
public List<String> search(String term) {
List<String> results = new ArrayList<>();
for (Map.Entry<String, List<String>> entry : index.entrySet()) {
if (entry.getKey().contains(term)) {
results.addAll(entry.getValue());
}
}
return results;
}
public static void main(String[] args) {
DataIndexer indexer = new DataIndexer();
//Example usage
List<String> searchResults = indexer.search("apple");
System.out.println("Search results for 'apple': " + searchResults);
}
}
Add your comment