annotate src/de/mpiwg/dwinter/fulltext/search/cli/Search.java @ 1:5c9c31510f0c

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:29 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
1 package de.mpiwg.dwinter.fulltext.search.cli;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
2
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
3 import java.io.BufferedReader;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
4 import java.io.File;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
5 import java.io.FileReader;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
6 import java.io.IOException;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
7 import java.io.InputStreamReader;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
8 import java.util.Date;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
9 import java.util.HashMap;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
10
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
11 import javax.xml.parsers.ParserConfigurationException;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
12 import javax.xml.xpath.XPathExpressionException;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
13
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
14 import org.apache.lucene.document.Document;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
15 import org.apache.lucene.queryParser.ParseException;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
16 import org.apache.lucene.queryParser.QueryParser;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
17 import org.apache.lucene.search.Collector;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
18 import org.apache.lucene.search.Query;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
19 import org.apache.lucene.search.ScoreDoc;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
20 import org.apache.lucene.search.TopDocs;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
21 import org.apache.lucene.search.TopDocsCollector;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
22 import org.xml.sax.SAXException;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
23
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
24 import de.mpiwg.dwinter.fulltext.search.FulltextSearch;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
25 import de.mpiwg.dwinter.fulltext.searcher.LanguageSearcher;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
26
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
27 public class Search {
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
28
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
29 /**
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
30 * @param args
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
31 * @throws IOException
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
32 * @throws ParseException
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
33 * @throws SAXException
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
34 * @throws ParserConfigurationException
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
35 * @throws XPathExpressionException
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
36 */
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
37 public static void main(String[] args) throws IOException, ParseException, XPathExpressionException, ParserConfigurationException, SAXException {
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
38
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
39 String usage = "search <index_dir>";
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
40 if (args.length != 1) {
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
41 System.err.println("Usage: " + usage);
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
42 System.exit(1);
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
43 }
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
44
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
45 String queries = null;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
46 FulltextSearch fulltextSearcher = new FulltextSearch(new File(args[0]));
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
47
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
48 BufferedReader in = null;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
49 if (queries != null) {
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
50 in = new BufferedReader(new FileReader(queries));
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
51 } else {
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
52 in = new BufferedReader(new InputStreamReader(System.in));
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
53 }
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
54
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
55 while (true) {
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
56 if (queries == null) // prompt the user
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
57 System.out.println("Enter query: ");
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
58
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
59 String line = in.readLine();
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
60
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
61 if (line == null || line.length() == -1)
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
62 break;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
63
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
64 line = line.trim();
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
65 if (line.length() == 0)
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
66 break;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
67
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
68 System.out.println("line: "+line);
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
69
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
70 HashMap<String, Collector> resultHash = fulltextSearcher.languageSearchers.parseAndsearchAllLanguages(line);
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
71
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
72 for (String lang: resultHash.keySet())
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
73 {
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
74 LanguageSearcher searcher = fulltextSearcher.languageSearchers.getSearcherByLanguage(lang);
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
75 TopDocsCollector col = (TopDocsCollector<ScoreDoc>)resultHash.get(lang);
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
76
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
77 System.out.println(lang+":"+col.getTotalHits() + " total matching documents");
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
78
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
79 TopDocs td= col.topDocs();
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
80 ScoreDoc[] docs = td.scoreDocs;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
81 final int HITS_PER_PAGE = 10;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
82 for (int start = 0; start < col.getTotalHits(); start += HITS_PER_PAGE) {
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
83 int end = Math.min(col.getTotalHits(), start + HITS_PER_PAGE);
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
84
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
85 System.out.println("Start:"+String.valueOf(start));
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
86 for(int i = start;i<(start+ HITS_PER_PAGE);i++){
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
87 //for (ScoreDoc scoreDoc:Adocs) {
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
88 ScoreDoc scoreDoc = docs[i];
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
89 Document doc = searcher.searcher.doc(scoreDoc.doc);
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
90
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
91 String path = doc.get("path");
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
92 String textId = doc.get("textId");
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
93
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
94 System.out.println("path:"+path);
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
95 System.out.println("docnr:"+String.valueOf(scoreDoc.doc));
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
96 System.out.println("textId:"+textId);
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
97 }
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
98 if (queries != null) // non-interactive
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
99 break;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
100
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
101 if (col.getTotalHits() > end) {
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
102 System.out.println("more (y/n) ? ");
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
103 line = in.readLine();
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
104 if (line.length() == 0 || line.charAt(0) == 'n')
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
105 break;
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
106 }
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
107 }
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
108 }
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
109 }
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
110 fulltextSearcher.languageSearchers.close();
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
111 }
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
112 }
5c9c31510f0c CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an.
dwinter
parents:
diff changeset
113