diff --git a/.idea/misc.xml b/.idea/misc.xml
index a165cb3..cbb200f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/src/simpleSearchEngine/Main.java b/src/simpleSearchEngine/Main.java
index b8ecb08..088161a 100644
--- a/src/simpleSearchEngine/Main.java
+++ b/src/simpleSearchEngine/Main.java
@@ -1,7 +1,172 @@
package simpleSearchEngine;
+import java.io.*;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.InputMismatchException;
+import java.util.Scanner;
+import java.util.function.Consumer;
+
public class Main {
+
+ private static Object[] dictObj;
+
+ static {
+ try {
+ dictObj = fileToArray();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ private static String[] dict = (String[]) dictObj[0];
+ private static String[] indDict = (String[]) dictObj[1];
+
public static void main(String[] args) {
- System.out.print("Hello world!");
+ invertedIndex(dict, indDict);
+ mainMenu();
+ }
+
+
+ /**
+ * function for user input data
+ * @return returns array of Strings that user input'ed
+ */
+ private static String[] input(){
+ Scanner inp = new Scanner(System.in);
+ System.out.print("Enter the number of people: ");
+ int inpNum = inp.nextInt();
+ String[] asset = new String[inpNum + 1];
+ System.out.println("Enter all people: ");
+ for(int i = 0; i <= inpNum; i++){
+ asset[i] = inp.nextLine();
+ }
+ String[] finalAsset = new String[inpNum];
+ System.arraycopy(asset, 1, finalAsset, 0, finalAsset.length);
+ return finalAsset;
+ }
+
+ /**
+ * subroutine that search all occurances of input String in dict
+ * and prints out found results.
+ */
+ private static void searchFunc(String[] dict){
+ Scanner inp = new Scanner(System.in);
+ String search = inp.next().toLowerCase();
+ for (String s : dict) {
+ if (s.toLowerCase().contains(search)) {
+ System.out.println(s);
+ }
+ }
+ }
+
+ /**
+ * Main menu for program
+ */
+ private static void mainMenu(){
+ Scanner inp = new Scanner(System.in);
+ while(true) {
+ System.out.print("=== Menu ===\n" +
+ "1. Find a person\n" +
+ "2. Print all people\n" +
+ "0. Exit\n\n");
+ System.out.print("Enter your choice: ");
+ try {
+ switch (inp.nextInt()) {
+ case 1:
+ searchFunc(dict);
+ break;
+ case 2:
+ printAll.accept(dict);
+ break;
+ case 0:
+ System.exit(0);
+ break;
+ default:
+ System.out.println("Wrong input!!!\n " +
+ "Please input a valid choice.");
+ break;
+ }
+ } catch (InputMismatchException i) {
+ System.out.println("Input valid integer number!");
+ }
+ }
+ }
+
+ private static Consumer printAll = (arr)-> {
+ for (int i = 0; i < arr.length; i++){
+ System.out.println((i + 1) + ") " + arr[i]);
+ }
+ };
+
+ /**
+ * Function for converting file into array of people
+ * @return dict array that contains all people from file
+ * @throws IOException
+ */
+ private static Object[] fileToArray() throws IOException {
+ File testFile;
+ BufferedReader readFile;
+ String[] dict = new String[50];
+ String[] indexDict = new String[dict.length * 2];
+ int counter = 0;
+ try {
+ testFile = new File("D:/simple-search-engine/src/simpleSearchEngine/testcase.txt");
+ Scanner input = new Scanner(testFile);
+ while (input.hasNext()){
+ String word = input.next();
+ indexDict[counter] = word;
+ counter++;
+ }
+ } catch (FileNotFoundException f){
+ System.out.print("Fole not found!!!");
+ }
+ counter = 0;
+ try {
+ testFile = new File("D:/simple-search-engine/src/simpleSearchEngine/testcase.txt");
+ readFile = new BufferedReader(new FileReader(testFile));
+ String line;
+ while ((line = readFile.readLine()) != null) {
+ dict[counter] = line;
+ counter++;
+ }
+ readFile.close();
+ } catch (FileNotFoundException f) {
+ System.out.println("file not found!!!");
+ }
+ Object[] obj = new Object[2];
+ obj[0] = dict;
+ obj[1] = indexDict;
+ return obj;
+ }
+
+ /**
+ * Fix this Inverted index MAYBE SOME MAGIC WILL HELP :(
+ * @param arr1 dictionary
+ * @param arr2 dictionary of tokens for search in arr1
+ */
+ private static void invertedIndex(String[] arr1, String[] arr2){
+ HashMap invInd = new HashMap<>();
+ int[] temp = new int[2];
+ int count = 0;
+ for(int j = 0; j < arr1.length; j++){
+ for(int i = 0; i < arr2.length; i++){
+ if(arr1[j].toLowerCase().contains(arr2[i].toLowerCase())){
+ temp[count] = j;
+ count++;
+ }
+ }
+ invInd.put(arr1[j], temp);
+ count = 0;
+ temp = new int[2];
+ }
+
+ for (String k: invInd.keySet()) {
+ System.out.print("Key: " + k + " Value: ");
+ int[] integers = invInd.get(k);
+ for (int i = 0; i < integers.length; i++){
+ System.out.print(integers[i] + ", ");
+ }
+ System.out.println();
+ }
}
}
\ No newline at end of file
diff --git a/src/simpleSearchEngine/testcase.txt b/src/simpleSearchEngine/testcase.txt
new file mode 100644
index 0000000..cc7d5af
--- /dev/null
+++ b/src/simpleSearchEngine/testcase.txt
@@ -0,0 +1,50 @@
+Kristofer Galley
+Fernando Marbury
+Kristyn Nix
+Regenia Enderle
+Tressa Dufrene
+Colette Mattei
+Wendolyn Mcphillips
+Jim Knauf
+Coreen Beckham
+Bob Yeh
+Shannan Strope
+Yer Fillion
+Margene Resendez
+Blossom Ambler
+Teri Ledet
+Dana Baron
+Abram Goldsberry
+Ferdinand Leopold
+Stefania Trunzo
+Alexis Collyer
+Carlene Pompa
+Oliver Dacruz
+Jonie Richter
+Pasquale Gallien
+Verdie Gentle
+Gerardo Strouth
+Agripina Dones
+Latricia Niebuhr
+Malena Schommer
+Drema Mena
+Heide Payeur
+Ranae Digiovanni
+Simona Pereira
+Nick Okamoto
+Angelita Wigington
+Elin Gray
+Dwain Bald
+Boris Beiler
+Paulina Moe
+Demetria Hostetler
+Nydia Mcduffie
+Florencio Defibaugh
+Warner Giblin
+May Mans
+Shu Chapman
+Kaycee Ritch
+Victorina Froehlich
+Roseanne Oatis
+Erica Radford
+Elyse Pauling
\ No newline at end of file