cuento mi direcctorio como es. tengo una carpeta documentos con 400 subcarpetas desde la 0 a la 400 y dentro de cada subcarpeta 5 archivos .txt siempre los mismos con los mismos nombres, por eso uso el si contiene bold pues lista[0].
asi recorro mi directorio:
Código HTML:
/*creamos una lista de ficheros y luego para cada fichero creamos un string por cada uno de los ficheros de un directorio*/ private static ArrayList []lista; public static void crearLista (File f) { if (f.isFile() && f.getName().endsWith(".txt")) { if (f.getName().contains("bold")) lista[0].add(f.getAbsolutePath()); else { if (f.getName().contains("text_ES")) lista[1].add(f.getAbsolutePath()); else { if (f.getName().contains("text_IMG")) lista[2].add(f.getAbsolutePath()); else { if (f.getName().contains("title")) lista[3].add(f.getAbsolutePath()); else lista[4].add(f.getAbsolutePath()); } } } return ; } if (f.isDirectory()) { String[] hijos = f.list(); for (int i=0; i<hijos.length; i++) { crearLista (new File (f, hijos[i])); } } }
Código HTML:
public static String leerFichero (File f) {//Éste código sirve para extraer las palabras reservadas de un archivo de texto como nuestro código fuente y guardar cada palabra en un Vector. El Vector actuará como un arreglo, pero de tamaño indefinido excepto por la cantidad de elementos que se introduzcan en él. StringBuffer s = new StringBuffer (); try { BufferedReader br = new BufferedReader (new FileReader(f)); String cad = br.readLine(); while (cad != null) { s.append(cad); s.append(" "); cad = br.readLine(); } br.close(); } catch (Exception e) { } return s.substring(0); }
Código HTML:
BufferedReader br = new BufferedReader (new FileReader(f));
Código HTML:
//BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("archivo.txt"), "utf-8"));
este es mi codigo completo x si falta algo que aclarar.
Código HTML:
package uas; import org.apache.lucene.index.*; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.Version; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.es.SpanishAnalyzer; import org.apache.lucene.document.*; import java.io.*; import java.util.ArrayList; public class CreaIndice { /*creamos una lista de ficheros y luego para cada fichero creamos un string por cada uno de los ficheros de un directorio*/ private static ArrayList []lista; public static void crearLista (File f) { if (f.isFile() && f.getName().endsWith(".txt")) { if (f.getName().contains("bold")) lista[0].add(f.getAbsolutePath()); else { if (f.getName().contains("text_ES")) lista[1].add(f.getAbsolutePath()); else { if (f.getName().contains("text_IMG")) lista[2].add(f.getAbsolutePath()); else { if (f.getName().contains("title")) lista[3].add(f.getAbsolutePath()); else lista[4].add(f.getAbsolutePath()); } } } return ; } if (f.isDirectory()) { String[] hijos = f.list(); for (int i=0; i<hijos.length; i++) { crearLista (new File (f, hijos[i])); } } } public static String leerFichero (File f) {//Éste código sirve para extraer las palabras reservadas de un archivo de texto como nuestro código fuente y guardar cada palabra en un Vector. El Vector actuará como un arreglo, pero de tamaño indefinido excepto por la cantidad de elementos que se introduzcan en él. StringBuffer s = new StringBuffer (); try { BufferedReader br = new BufferedReader (new FileReader(f)); //BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("c:\\Temp\\documentos\\0\\title_ES.txt"), "utf-8")); String cad = br.readLine(); while (cad != null) { s.append(cad); s.append(" "); cad = br.readLine(); } br.close(); } catch (Exception e) { } return s.substring(0); } public static void main(String[] args) throws Exception { lista = new ArrayList[5]; for (int i=0; i<5; i++) lista[i] = new ArrayList(); File directorioGuardarIndice = new File("c:\\Temp\\indice");//crear carpeta indice File Documentos = new File("c:\\Temp\\documentos");//crear carpeta con los documentos a indexar crearLista (Documentos); /*for (int n=0; n<5; n++) { System.out.println("Lista: "+(n+1)); for (int i=0; i<lista[n].size(); i++) System.out.println(lista[n].get(i)); }*/ Analyzer analizador = new SpanishAnalyzer(Version.LUCENE_31);//analizador //Analyzer analizador = new StandardAnalyzer(Version.LUCENE_31); IndexWriterConfig configuracionIndice = new IndexWriterConfig( Version.LUCENE_31, analizador); IndexWriter Indice = new IndexWriter(FSDirectory.open(directorioGuardarIndice), configuracionIndice); //IndexWriter Indice = new IndexWriter(RecorreDirectorio, analizador, true, IndexWriter.MaxFieldLength.LIMITED); String bold; String text; String textIMG; String title; String underline; String id; int num = lista[0].size(); //directorios System.out.println("Directorios buscados: "+num); for (int i=0; i<num; i++) { id = num+""; bold = leerFichero(new File ((String)lista[0].get(i))); text = leerFichero(new File ((String)lista[1].get(i))); textIMG = leerFichero(new File ((String)lista[2].get(i))); title = leerFichero(new File ((String)lista[3].get(i))); underline = leerFichero(new File ((String)lista[4].get(i))); System.out.println("--------------------bold "+bold); System.out.println("--------------------text"+text); System.out.println("-------------------textimg"+textIMG); System.out.println("-------------------title"+title); System.out.println("-------------------underline"+underline); Document doc = new Document(); // Campo bold Field campobold = new Field("bold", bold,Field.Store.YES, Field.Index.ANALYZED); doc.add(campobold); // Campo text Field campocontenido = new Field("contenido", text,Field.Store.YES, Field.Index.ANALYZED); doc.add(campocontenido); // Campo textimg Field campotextimg = new Field("textimg", textIMG,Field.Store.YES, Field.Index.ANALYZED); doc.add(campotextimg); // Campo title Field campotitle = new Field("title", title,Field.Store.YES, Field.Index.ANALYZED); doc.add(campotitle); // Campo underlineWords Field campounderlineWords = new Field("underlineWords", underline,Field.Store.YES, Field.Index.ANALYZED); doc.add(campounderlineWords); Indice.addDocument(doc); } /********************************************************************/ /* Campo nombre archivo Field camponombre = new Field("rutaArchivo", new InputStreamReader(new FileInputStream(f), "UTF-8")); */ Indice.optimize(); Indice.close(); System.out.println("el numero de documentos indexados es " + Indice.numDocs()); } }