Hallo ihr Lieben!
Ich habe wahrscheinlich eher ein kleines Problem, kann es aber mit meinen fast nicht mehr vorhandenem Java-Grundkenntnissen nicht lösen und bin schon am verzweifeln...
Ich muss eine Webseite indexieren. Im Seminar haben wir das auch schon gemacht, allerdings mit txt-Dateien. Ich habe also versucht in den untenstehenden Code irgendwie HTMLDocument zu verwenden, weil es sich für mich am sinnvollsten anhört. Nur hab ich das Problem das ich keine Ahnung habe wie.. Kann mir jemand helfen? Oder wenigstens einen Tipp geben wie ich das anstellen kann...? Vielen Dank im Vorraus. Di_to
Ich habe wahrscheinlich eher ein kleines Problem, kann es aber mit meinen fast nicht mehr vorhandenem Java-Grundkenntnissen nicht lösen und bin schon am verzweifeln...
Ich muss eine Webseite indexieren. Im Seminar haben wir das auch schon gemacht, allerdings mit txt-Dateien. Ich habe also versucht in den untenstehenden Code irgendwie HTMLDocument zu verwenden, weil es sich für mich am sinnvollsten anhört. Nur hab ich das Problem das ich keine Ahnung habe wie.. Kann mir jemand helfen? Oder wenigstens einen Tipp geben wie ich das anstellen kann...? Vielen Dank im Vorraus. Di_to
Code:
/*
* Created on 01.02.2012
*/
import org.apache.lucene.index.*;
import org.apache.lucene.document.*;
//import org.apache.lucene.analysis.*;
//import org.apache.lucene.analysis.de.*;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopScoreDocCollector;
import org.apache.lucene.store.*;
import org.apache.lucene.util.Version;
import java.io.IOException;
import java.io.File;
import java.io.FileReader;
/**
* @author Ma
*/
public class stkurs2 {
public static void main(String[] args) {
System.out.println ("Start ...");
/// Index erzeugen und initialisieren
try {
File indexfile = new File ("index_test");
File docdir = new File ("texte");
Directory indexDir = FSDirectory.open(indexfile);
StandardAnalyzer analyzer = new StandardAnalyzer (Version.valueOf ("LUCENE_35"));
IndexWriterConfig conf = new IndexWriterConfig (Version.valueOf ("LUCENE_35"), analyzer );
IndexWriter iwriter = new IndexWriter (indexDir, conf);
/// Dokumente hinzufuegen
File[] files = docdir.listFiles();
String docText[] = new String[files.length];
if (files != null) { // Erforderliche Berechtigungen etc. sind vorhanden
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
System.out.print(" (Ordner)\n");
}
else {
System.out.println("Datei wird gelesen: ");
System.out.println(files[i].getAbsolutePath()+"\n");
try {
FileReader fr = new FileReader(files[i]);
char[] content = new char[(int)files[i].length()];
fr.read(content);
System.out.println(String.valueOf(content));
docText[i] = (String.valueOf(content));
}
catch (IOException e) {
e.printStackTrace();
}
}
}
}
for (int d=0; d<files.length ; d++){
Document doc = new Document ();
Field f = new Field ("text", docText[d], Field.Store.YES, Field.Index.ANALYZED ); /// was passier hier?
doc.add(f);
iwriter.addDocument (doc);
}
iwriter.close() ;
System.out.println ("Fertig");
// Anfrage
String querystr = args.length > 0 ? args[0] : "bank";
// the "title" arg specifies the default field to use
// when no field is explicitly specified in the query.
Query q = new QueryParser(Version.valueOf ("LUCENE_35"), "text", analyzer).parse(querystr);
// Suche
int hitsPerPage = 10;
IndexReader reader = IndexReader.open(indexDir);
IndexSearcher searcher = new IndexSearcher(reader);
TopScoreDocCollector collector =
TopScoreDocCollector.create(hitsPerPage, true);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
// Ergebnisse anzeigen
System.out.println("Gefundene Dokumente " + hits.length );
for(int i=0;i<hits.length;++i) {
int docId = hits[i].doc;
Document d = searcher.doc(docId);
System.out.println((i + 1) + ". " + d.get("text"));
}
searcher.close();
}
catch (Exception e)
{
System.out.println ("Fehler in Klasse " + e.getClass() + "\n: " + e.getMessage() );
}
}
}