Replace Parser class with Indexer

This commit is contained in:
coolneng 2021-01-08 23:21:18 +01:00
parent 5155726341
commit 6405617858
Signed by: coolneng
GPG Key ID: 9893DA236405AF57
2 changed files with 65 additions and 39 deletions

View File

@ -0,0 +1,65 @@
package org.RI.P2;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.file.Paths;
import java.text.ParseException;
import java.util.HashMap;
import java.util.Map;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.json.simple.JSONArray;
import org.json.simple.JSONValue;
public class Indexer {
IndexWriter index;
String folderPath;
Map<String, Analyzer> analyzerPerField;
Indexer(String folderPath) throws IOException, ParseException {
this.folderPath = folderPath;
analyzerPerField = new HashMap<>();
createIndex(folderPath);
}
public JSONArray parseJSONFile(String filePath) throws IOException, ParseException {
InputStream jsonFile = getClass().getResourceAsStream(filePath);
Reader readerJson = new InputStreamReader(jsonFile);
Object fileObjects = JSONValue.parse(readerJson);
JSONArray arrayObjects = (JSONArray) fileObjects;
return arrayObjects;
}
public void openIndex() throws IOException {
Directory dir = FSDirectory.open(Paths.get(folderPath));
Analyzer analyzer = new StandardAnalyzer();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
config.setOpenMode(OpenMode.CREATE_OR_APPEND);
index = new IndexWriter(dir, config);
}
public void addDocuments(JSONArray jsonObjects) throws IOException {
Document doc = new Document();
index.addDocument(doc);
}
public void commitChanges() throws IOException {
index.commit();
index.close();
}
public void createIndex(String folderPath) throws IOException, ParseException {
JSONArray jsonObjects = parseJSONFile(folderPath);
openIndex();
addDocuments(jsonObjects);
commitChanges();
}
}

View File

@ -1,39 +0,0 @@
package org.RI.P2;
import java.util.List;
import java.io.IOException;
import java.io.Reader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Collectors;
import org.json.simple.JSONArray;
import org.json.simple.JSONValue;
import org.json.simple.parser.ParseException;
public class Parser {
private static List<File> files;
private static void readFiles(String directory) throws IOException {
files = Files.walk(Paths.get(directory)).filter(Files::isRegularFile).map(Path::toFile)
.collect(Collectors.toList());
}
public JSONArray parseJSONFile(String filePath) throws IOException, ParseException {
InputStream jsonFile = getClass().getResourceAsStream(filePath);
Reader readerJson = new InputStreamReader(jsonFile);
Object fileObjects = JSONValue.parseWithException(readerJson);
JSONArray arrayObjects = (JSONArray) fileObjects;
return arrayObjects;
}
private static void usage() {
System.out.println("Usage: Parser <directory>");
System.out.println("option directory: directory that contains JSON files");
System.exit(1);
}
}