Mercurial > hg > fulltextSearchServer
comparison src/de/mpiwg/dwinter/fulltextSearchServer/searchThreads/SearchInlinesThread.java @ 1:83e9a828e794
Version mit integrierter Suche ?ber XML-Volltexte
author | dwinter |
---|---|
date | Wed, 26 Jan 2011 14:41:34 +0100 |
parents | db87c1b7eb6d |
children |
comparison
equal
deleted
inserted
replaced
0:db87c1b7eb6d | 1:83e9a828e794 |
---|---|
1 package de.mpiwg.dwinter.fulltextSearchServer.searchThreads; | 1 package de.mpiwg.dwinter.fulltextSearchServer.searchThreads; |
2 | 2 |
3 import java.io.File; | 3 import java.io.File; |
4 import java.io.IOException; | 4 import java.io.IOException; |
5 import java.net.URLDecoder; | |
5 | 6 |
6 import org.apache.log4j.Logger; | 7 import org.apache.log4j.Logger; |
7 import org.apache.lucene.analysis.Analyzer; | 8 import org.apache.lucene.analysis.Analyzer; |
8 import org.apache.lucene.index.CorruptIndexException; | 9 import org.apache.lucene.index.CorruptIndexException; |
10 import org.apache.lucene.index.Term; | |
9 import org.apache.lucene.queryParser.ParseException; | 11 import org.apache.lucene.queryParser.ParseException; |
10 import org.apache.lucene.queryParser.QueryParser; | 12 import org.apache.lucene.queryParser.QueryParser; |
11 import org.apache.lucene.search.BooleanClause; | 13 import org.apache.lucene.search.BooleanClause; |
12 import org.apache.lucene.search.BooleanQuery; | 14 import org.apache.lucene.search.BooleanQuery; |
13 import org.apache.lucene.search.Query; | 15 import org.apache.lucene.search.Query; |
16 import org.apache.lucene.search.TermQuery; | |
14 import org.apache.lucene.store.LockObtainFailedException; | 17 import org.apache.lucene.store.LockObtainFailedException; |
15 import org.apache.lucene.util.Version; | 18 import org.apache.lucene.util.Version; |
16 | 19 |
17 import de.mpiwg.dwinter.fulltext.search.FulltextSearchDocsLines; | 20 import de.mpiwg.dwinter.fulltext.search.FulltextSearchDocsLines; |
21 import de.mpiwg.dwinter.fulltext.search.IFulltextSearchDocsLines; | |
22 import de.mpiwg.dwinter.fulltext.search.xmlsearchadapter.XMLSearchServerAdapter; | |
23 import de.mpiwg.dwinter.fulltext.searcher.LanguageSearcher; | |
18 | 24 |
19 public class SearchInlinesThread extends Thread { | 25 public class SearchInlinesThread extends Thread { |
20 | 26 |
21 //private File docIndex; | 27 // private File docIndex; |
22 //private File lineDir; | 28 // private File lineDir; |
23 private String searchString; | 29 private String searchString; |
24 private String ticket; | 30 private String ticket; |
25 private String lang; | 31 private String lang; |
26 private FulltextSearchDocsLines fulltextSearcher; | 32 private IFulltextSearchDocsLines[] fulltextSearcher; |
27 private Logger logger; | 33 private Logger logger; |
28 private String searchMetaData; | 34 private String searchMetaData; |
29 | 35 |
30 public SearchInlinesThread(FulltextSearchDocsLines fulltextSearcher, String searchString, String searchMetaData,String lang, String ticket){ | 36 public SearchInlinesThread(IFulltextSearchDocsLines[] fulltextSearcher, |
31 //this.docIndex = docIndex; | 37 String searchString, String searchMetaData, String lang, |
32 //this.lineDir = lineDir; | 38 String ticket) { |
39 // this.docIndex = docIndex; | |
40 // this.lineDir = lineDir; | |
33 this.fulltextSearcher = fulltextSearcher; | 41 this.fulltextSearcher = fulltextSearcher; |
34 this.searchString = searchString; | 42 this.searchString = searchString; |
35 this.searchMetaData = searchMetaData; | 43 this.searchMetaData = searchMetaData; |
36 this.ticket=ticket; | 44 this.ticket = ticket; |
37 this.lang =lang; | 45 this.lang= lang; |
38 | 46 this.logger = Logger.getRootLogger(); |
39 | |
40 this.logger=Logger.getRootLogger(); | |
41 } | 47 } |
42 public void run(){ | |
43 String text; | |
44 | |
45 | |
46 FulltextSearchDocsLines fulltextSearcher; | |
47 try { | |
48 //fulltextSearcher = new FulltextSearchDocsLines(docIndex,lineDir); | |
49 | |
50 | 48 |
51 Analyzer analyzer = this.fulltextSearcher.languageSearchers.getSearcherByLanguage(lang).analyzer; | 49 public void run() { |
52 QueryParser parser = new QueryParser(Version.LUCENE_30,"contents",analyzer); | 50 // String text; |
53 logger.debug(searchString); | 51 |
54 Query query= parser.parse(searchString); | 52 for (int i = 0; i < fulltextSearcher.length; i++) { |
55 | 53 IFulltextSearchDocsLines currentSearcher = fulltextSearcher[i]; |
56 if ((searchMetaData!=null) && !searchMetaData.equals("")){ | 54 |
57 QueryParser parserMD = new QueryParser(Version.LUCENE_30,"dcMetaData",analyzer); | 55 // IFulltextSearchDocsLines fulltextSearcher; |
58 Query queryMD= parserMD.parse(searchMetaData); | 56 try { |
59 BooleanQuery booleanQuery = new BooleanQuery(); | 57 // fulltextSearcher = new |
60 booleanQuery.add(queryMD, BooleanClause.Occur.MUST); | 58 // FulltextSearchDocsLines(docIndex,lineDir); |
61 booleanQuery.add(query, BooleanClause.Occur.MUST); | 59 Query query = null; |
62 | 60 if (FulltextSearchDocsLines.class.isInstance(currentSearcher)) {// lucenebased |
63 query = booleanQuery; | 61 // searcher |
64 } | 62 FulltextSearchDocsLines ftsdl = (FulltextSearchDocsLines) currentSearcher; |
65 this.fulltextSearcher.searchInLinesToDir(query,lang,ticket); | 63 |
66 } catch (CorruptIndexException e) { | 64 |
67 // TODO Auto-generated catch block | 65 LanguageSearcher ls = ftsdl.languageSearchers |
68 e.printStackTrace(); | 66 .getSearcherByLanguage(lang); |
69 } catch (LockObtainFailedException e) { | 67 |
70 // TODO Auto-generated catch block | 68 if(ls==null) // language not supported |
71 e.printStackTrace(); | 69 continue; |
72 } catch (IOException e) { | 70 |
73 // TODO Auto-generated catch block | 71 Analyzer analyzer = ls.analyzer; |
74 e.printStackTrace(); | 72 QueryParser parser = new QueryParser(Version.LUCENE_30, |
75 } catch (ParseException e) { | 73 "contents", analyzer); |
76 // TODO Auto-generated catch block | 74 logger.debug(searchString); |
77 e.printStackTrace(); | 75 query = parser.parse(searchString); |
76 | |
77 if ((searchMetaData != null) && !searchMetaData.equals("")) { | |
78 QueryParser parserMD = new QueryParser( | |
79 Version.LUCENE_30, "dcMetaData", analyzer); | |
80 Query queryMD = parserMD.parse(searchMetaData); | |
81 BooleanQuery booleanQuery = new BooleanQuery(); | |
82 booleanQuery.add(queryMD, BooleanClause.Occur.MUST); | |
83 booleanQuery.add(query, BooleanClause.Occur.MUST); | |
84 | |
85 query = booleanQuery; | |
86 } | |
87 } else if (XMLSearchServerAdapter.class | |
88 .isInstance(currentSearcher)) { | |
89 | |
90 if (!XMLSearchServerAdapter.getSupportedLanguages().contains(lang)){ | |
91 continue; // language not supported | |
92 } | |
93 Term t = new Term("contents", searchString); | |
94 query = new TermQuery(t); | |
95 | |
96 if ((searchMetaData != null) && !searchMetaData.equals("")) { | |
97 Term t2 = new Term("dcMetaData", searchMetaData); | |
98 Query query2 = new TermQuery(t2); | |
99 | |
100 BooleanQuery booleanQuery = new BooleanQuery(); | |
101 booleanQuery.add(query2, BooleanClause.Occur.MUST); | |
102 booleanQuery.add(query, BooleanClause.Occur.MUST); | |
103 | |
104 query = booleanQuery; | |
105 } | |
106 } | |
107 currentSearcher.searchInLinesToDir(query, lang, ticket); | |
108 } catch (CorruptIndexException e) { | |
109 // TODO Auto-generated catch block | |
110 e.printStackTrace(); | |
111 } catch (LockObtainFailedException e) { | |
112 // TODO Auto-generated catch block | |
113 e.printStackTrace(); | |
114 } catch (IOException e) { | |
115 // TODO Auto-generated catch block | |
116 e.printStackTrace(); | |
117 } catch (ParseException e) { | |
118 // TODO Auto-generated catch block | |
119 e.printStackTrace(); | |
120 } | |
78 } | 121 } |
79 } | 122 } |
80 } | 123 } |