Skip to content

Commit

Permalink
Se mejora la idea del index para agregar posting
Browse files Browse the repository at this point in the history
  • Loading branch information
tonyvazgar committed Aug 23, 2018
1 parent aaa53bc commit 5d42660
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 11 deletions.
95 changes: 90 additions & 5 deletions BooleanRetrieval.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import com.sun.corba.se.spi.ior.ObjectKey;

import java.io.File;
import java.lang.reflect.Array;
import java.text.Collator;
import java.util.*;
public class BooleanRetrieval{

public static ArrayList<String> leerDocumento(String nombre, ArrayList<String> diccionario){
public static LinkedList<Object> leerDocumento(String nombre, LinkedList<Object> diccionario){
Scanner scanner;
File file ;
try{
Expand All @@ -15,24 +19,105 @@ public static ArrayList<String> leerDocumento(String nombre, ArrayList<String> d
}catch (Exception e) {
System.out.println("No hay ese documento");
}
Collections.sort(diccionario);
//Collections.sort(diccionario);
System.out.println(diccionario);
return diccionario;
}

//Map<String, LinkedList<Integer>>

public static void index(String[] files){

Scanner scanner;
File file;

ArrayList<String> diccionario = new ArrayList<String>(); //Todas las palabras de los 3 textos
//Set<String> diccionario = new HashSet<String>();
List diccionariOrdenado; //Es para ordenar diccionario
int[] posting = new int[3];

ArrayList<String[]> palabrasArchivos = new ArrayList<String[]>(); //Se almacenan todas las palabras para leer solo una vez


Map<String, LinkedList<Integer>> invertedIndex = new HashMap<String, LinkedList<Integer>>();


///////////////////////

/*
*Agregamos las palabras al diccionario y despues del for se ordena.
*/
for(int i = 0; i < files.length; i++){
try{
file = new File("./" + files[i] + ".txt");
scanner = new Scanner(file);
ArrayList<String> lecturas = new ArrayList<String>();
while (scanner.hasNext()){
String word = scanner.next().toLowerCase();
diccionario.add(word); //Se agregan al diccionario global
lecturas.add(word); //Se a palabras de cada archivo
}
int numberOfWords = lecturas.size(); //Para saber el numero de palabras para el texto en el que vamos
String[] palabras = new String[numberOfWords]; //Se hace arreglo para cada uno exacto
for (int j = 0; j < numberOfWords; j++) {
palabras[j] = lecturas.get(j); //Se agregan
}
Arrays.sort(palabras); //Se guardan en orden alfabetico
palabrasArchivos.add(palabras); //se agrega el conjuto de palabras al repositorio global
}catch (Exception e){
System.err.println("No existe ese documento :(");
}
}

diccionariOrdenado = new ArrayList(diccionario);
Collections.sort(diccionariOrdenado);
System.out.println(diccionariOrdenado + "\ntamañoooo:"+ diccionariOrdenado.size());

/*
*Se empieza a buscar por cada palabra
*
* Se quiere hacer que por cada palabra busque si existen en los conjuntos o repositorio global
* si es asi se hace una linked list con la posicion del conjunto
* y esta linked list se mete al map<String, LinkedList<Integer>>
* con el string de la palabra y la linked list simula el posting
*/
for(Object palabra: diccionariOrdenado){
for(int archivo = 0; archivo < palabrasArchivos.size(); archivo++){
System.out.println(Arrays.toString(palabrasArchivos.get(archivo)));
/*for(int i = 0; i < posts.length; i++){
if(palabra.equals(posts[i])){
System.out.println(palabra);
}
}*/
}
}
}



public static void main(String[] args) {
//LinkedList<Object> index = new LinkedList<Object>();
ArrayList<String> diccionario1 = new ArrayList<String>();
ArrayList<String> diccionario2 = new ArrayList<String>();
ArrayList<String> diccionario3 = new ArrayList<String>();

//java.util.Map<String, String> dic = new java.util.Map<>();

System.out.println("Leyendo el archivo........");
diccionario1 = leerDocumento("texto1", diccionario1);
diccionario2 = leerDocumento("texto2", diccionario2);
diccionario3 = leerDocumento("texto3", diccionario3);
String files[] = {"texto1", "texto2", "texto3"};
index(files);
/*
//index.add(leerDocumento("texto1", index));
//index.add(leerDocumento("texto2", index));
//index.add(leerDocumento("texto3", index));
//System.out.println(index.get(12));
System.out.println(diccionario1.toString());
System.out.println(diccionario2.toString());
System.out.println(diccionario3.toString());
*/
System.out.println("Lectura finalizada.");

}
}
3 changes: 1 addition & 2 deletions texto1.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
pepe pecas pica papas con un pico
pepe pecas pica papitas ricas
brutus cornelius swiss atom mac
4 changes: 1 addition & 3 deletions texto2.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
Las fuertes lluvias habrían causado que la aeronave de la aerolínea
Xiamen Air se deslizara en la pista cuando trataba de aterrizar en
el aeropuerto internacional de Manila
mac laptop juan jorge pepe
2 changes: 1 addition & 1 deletion texto3.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Esta lloviendo mucho y nos vamos a mojar por que no traemos una sombrilla y hace mucho frio
pedro mesa coche sillon puerta piso reloj brutus mac

0 comments on commit 5d42660

Please sign in to comment.