annotate src/de/mpiwg/dwinter/fulltext/ticket/LanguageWriter.java @ 0:72a015318a6d

CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an. https://it-dev.mpiwg-berlin.mpg.de/tracs/pythonOcropusTools/ticket/16
author dwinter
date Wed, 03 Nov 2010 12:26:20 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
1 package de.mpiwg.dwinter.fulltext.ticket;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
2
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
3 import java.io.File;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
4 import java.io.FileNotFoundException;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
5 import java.io.FileOutputStream;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
6 import java.io.FileWriter;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
7 import java.io.IOException;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
8 import java.io.OutputStreamWriter;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
9 import java.io.UnsupportedEncodingException;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
10 import java.util.HashSet;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
11 import java.util.Set;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
12
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
13 import org.apache.lucene.document.Document;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
14 import org.apache.lucene.index.CorruptIndexException;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
15 import org.apache.lucene.index.IndexReader;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
16 import org.apache.lucene.search.Query;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
17 import org.apache.lucene.search.ScoreDoc;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
18 import org.apache.lucene.search.TopDocs;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
19 import org.apache.lucene.search.TopScoreDocCollector;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
20
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
21 import sun.security.krb5.internal.PAEncTSEnc;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
22
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
23 import de.mpiwg.dwinter.fulltext.search.utils.OCRDoc;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
24 import de.mpiwg.dwinter.fulltext.search.utils.OCRLine;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
25 import de.mpiwg.dwinter.lucencetools.documents.FileDocument;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
26
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
27 public class LanguageWriter extends TicketWriter{
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
28
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
29 private File languageFile;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
30 private String language;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
31
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
32 public LanguageWriter(String ticket, String language) throws IOException{
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
33
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
34 super(ticket);
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
35
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
36 languageFile = new File(ticketFile.getAbsolutePath()+PATHSEPARATOR+language);
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
37 if(!languageFile.exists()){
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
38 logger.debug("Create Languagefolder:"+languageFile.getCanonicalPath());
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
39 if(!languageFile.mkdirs())
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
40 throw new IOException();
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
41 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
42
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
43 this.language=language;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
44 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
45
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
46 /** Schreibt das Ergebnis einer Suche in eine Datei im Ticket.
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
47 * @param docs
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
48 * @param reader
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
49 * @return Anzahl der tatsaechlich geschriebenen Treffer
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
50 * @throws CorruptIndexException
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
51 * @throws IOException
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
52 */
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
53 public Integer writeResults(TopDocs docs, IndexReader reader) throws CorruptIndexException, IOException {
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
54 File resultFile = new File(languageFile.getAbsolutePath()+PATHSEPARATOR+"result");
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
55 FileOutputStream fs = new FileOutputStream(resultFile);
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
56 OutputStreamWriter rw = new OutputStreamWriter(fs,"utf-8");
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
57
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
58 Set<String> idsAlreadyDone = new HashSet<String>(); // TODO: aus irgendwelche gruenden gibt es ein Dokument mehrfach in den Fundstellen
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
59
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
60 //FileWriter rw = new FileWriter(resultFile);
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
61
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
62 if(!languageFile.exists()){
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
63 logger.debug("Create Languagefolder:"+languageFile.getCanonicalPath());
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
64 if(!languageFile.mkdirs())
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
65 throw new IOException();
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
66 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
67 Integer counter =0;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
68 for (ScoreDoc sd:docs.scoreDocs)
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
69 {
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
70 Document d = reader.document(sd.doc);
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
71
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
72 String id = d.get("textId");
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
73 if (!idsAlreadyDone.contains(id)){ // stelle sicher das alle treffer nur einmal in die date geschrieben werden.
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
74 idsAlreadyDone.add(id);
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
75 rw.write(FileDocument.toXML(d)+"\n");
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
76 counter ++;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
77 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
78 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
79 rw.close();
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
80 return counter;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
81 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
82
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
83
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
84 public void writeResultInfo(TopDocs docs, Integer counter) throws IOException {
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
85 File resultFile = new File(languageFile.getAbsolutePath()+PATHSEPARATOR+"resultInfo");
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
86 FileOutputStream fs = new FileOutputStream(resultFile);
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
87 OutputStreamWriter rw = new OutputStreamWriter(fs,"utf-8");
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
88 String ret = "<resultInfo>";
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
89 int hits = docs.totalHits;
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
90 ret +="<lang>"+language+"</lang>";
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
91 ret +="<hits>"+counter+"</hits>";
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
92 ret +="<totalHits>"+hits+"</totalHits>";
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
93
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
94 ret+= "</resultInfo>";
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
95 rw.write(ret);
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
96 rw.close();
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
97 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
98
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
99
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
100 public void writeDoc(OCRDoc ocrDoc) throws IOException {
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
101 // erzeuge fuer jedes document einen ordner
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
102
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
103 File docFile = new File(languageFile.getAbsolutePath()+PATHSEPARATOR+ocrDoc.textId.replace(PATHSEPARATORCHAR, ':'));
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
104 if(!docFile.exists()){
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
105 logger.debug("Create Docfolder:"+docFile.getCanonicalPath());
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
106 if(!docFile.mkdirs())
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
107 throw new IOException();
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
108 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
109
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
110 // jetzt fuer jese seite ein file
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
111 for (String page:ocrDoc.linesInPage.keySet()){
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
112 File pageFile = new File(docFile.getAbsolutePath()+PATHSEPARATOR+page.replace(PATHSEPARATORCHAR, ':'));
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
113 FileWriter pageFileWriter = new FileWriter(pageFile);
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
114
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
115 for (OCRLine line: ocrDoc.linesInPage.get(page)){
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
116 pageFileWriter.write(line.toString()+"\n");
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
117 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
118 pageFileWriter.close();
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
119 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
120 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
121
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
122 public void saveQuery(Query query) throws IOException {
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
123
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
124 File qf = new File(languageFile.getAbsolutePath()+PATHSEPARATOR+"query");
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
125 FileWriter fw = new FileWriter(qf);
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
126 fw.write(query.toString());
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
127 fw.close();
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
128 }
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
129
72a015318a6d CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
130 }