List of usage examples for org.apache.lucene.index IndexReader close
@Override public final synchronized void close() throws IOException
From source file:cn.edu.thss.iise.beehivez.server.index.labelindex.LabelLuceneIndex.java
License:Open Source License
public boolean contain(String label) { try {/*from ww w . j a va 2 s. c o m*/ IndexReader reader = IndexReader.open(this.indexDir, true); Searcher searcher = new IndexSearcher(reader); // use the boolean query HashSet<String> queryTermSet = new HashSet<String>(); TokenStream stream = analyzer.tokenStream(LabelDocument.FIELD_LABEL, new StringReader(label)); TermAttribute termAtt = stream.addAttribute(TermAttribute.class); stream.reset(); while (stream.incrementToken()) { queryTermSet.add(termAtt.term()); } stream.end(); stream.close(); // construct the query BooleanQuery bq = new BooleanQuery(); Iterator<String> it = queryTermSet.iterator(); while (it.hasNext()) { String s = it.next(); Term term = new Term(LabelDocument.FIELD_LABEL, s); TermQuery termQuery = new TermQuery(term); bq.add(termQuery, Occur.MUST); } ExactLabelQueryResultCollector collector = new ExactLabelQueryResultCollector(reader, label); searcher.search(bq, collector); boolean ret = collector.isExistQueryLabel(); reader.close(); return ret; } catch (Exception e) { e.printStackTrace(); } return false; }
From source file:cn.edu.thss.iise.beehivez.server.index.labelindex.LabelLuceneIndex.java
License:Open Source License
public TreeSet<SimilarLabelQueryResult> getSimilarLabels(String query, float similarity) { TreeSet<SimilarLabelQueryResult> ret = new TreeSet<SimilarLabelQueryResult>(); if (query == null) { ret.add(new SimilarLabelQueryResult(null, 1)); return ret; }//from w ww . ja v a 2s.com try { IndexReader reader = IndexReader.open(this.indexDir, true); Searcher searcher = new IndexSearcher(reader); // get terms from query HashSet<String> queryTermSet = new HashSet<String>(); TokenStream stream = analyzer.tokenStream(LabelDocument.FIELD_LABEL, new StringReader(query)); TermAttribute termAtt = stream.addAttribute(TermAttribute.class); stream.reset(); while (stream.incrementToken()) { queryTermSet.add(termAtt.term()); } stream.end(); stream.close(); // construct the query BooleanQuery bq = new BooleanQuery(); Iterator<String> it = queryTermSet.iterator(); SynonymMap synMap = SynonymIndex.getSynonymMap(); HashSet<String> expandedQueryTermSet = new HashSet<String>(queryTermSet); while (it.hasNext()) { String s = it.next(); Term term = new Term(LabelDocument.FIELD_LABEL, s); TermQuery termQuery = new TermQuery(term); bq.add(termQuery, Occur.SHOULD); // expand using synonyms for (String syn : synMap.getSynonyms(s)) { stemer.setCurrent(syn); stemer.stem(); syn = stemer.getCurrent(); if (expandedQueryTermSet.add(syn)) { term = new Term(LabelDocument.FIELD_LABEL, syn); termQuery = new TermQuery(term); bq.add(termQuery, Occur.SHOULD); } } } // search in the label index SimilarLabelQueryResultCollector collector = new SimilarLabelQueryResultCollector(reader, queryTermSet, similarity); searcher.search(bq, collector); ret = collector.getQueryResult(); searcher.close(); reader.close(); } catch (Exception e) { e.printStackTrace(); } return ret; }
From source file:cn.edu.thss.iise.beehivez.server.index.petrinetindex.relationindex.TaskRelationIndex.java
License:Open Source License
@Override public TreeSet<ProcessQueryResult> getProcessModels(Object o, float similarity) { TreeSet<ProcessQueryResult> ret = new TreeSet<ProcessQueryResult>(); try {//from w w w . j a v a 2 s. co m if (o instanceof String) { String query = (String) o; // analyze the query StringReader sr = new StringReader(query); BufferedReader br = new BufferedReader(sr); QueryParser parser = new QueryParser(br); if (GlobalParameter.isEnableSimilarLabel()) { parser.setSemanticAide(this.labelIndex, GlobalParameter.getLabelSemanticSimilarity()); } Query q = parser.parse(); // System.out.println("before optimization"); // System.out.println(q.toString()); br.close(); sr.close(); // optimize the query here // bq = parser.optimize(bq); // System.out.println("after optimization"); // System.out.println(bq.toString()); // query the lucene IndexReader reader = IndexReader.open(FSDirectory.open(INDEX_DIR), true); Searcher searcher = new IndexSearcher(reader); RelationQueryResultCollector collector = new RelationQueryResultCollector(reader); searcher.search(q, collector); ret = collector.getQueryResult(); searcher.close(); reader.close(); } } catch (Exception e) { e.printStackTrace(); } return ret; }
From source file:cn.edu.thss.iise.beehivez.server.index.petrinetindex.tarluceneindex.TARLuceneIndex.java
License:Open Source License
@Override public TreeSet<ProcessQueryResult> getProcessModels(Object o, float similarity) { TreeSet<ProcessQueryResult> ret = new TreeSet<ProcessQueryResult>(); try {//from w w w . j av a 2s .co m if (o instanceof PetriNet) { PetriNet pn = (PetriNet) o; IndexReader reader = IndexReader.open(FSDirectory.open(INDEX_DIR), true); Searcher searcher = new IndexSearcher(reader); BooleanQuery bq = new BooleanQuery(); bq.setMaxClauseCount(Integer.MAX_VALUE); // make it sure that every queryterm is unique HashSet<String> expandedTars = new HashSet(); // expand the query tars with their similar ones HashSet<HashSet<String>> exQueryTars = new HashSet<HashSet<String>>(); // calculate the tars Iterator<TransitionLabelPair> itTAR = PetriNetUtil.getTARSFromPetriNetByCFP(pn).iterator(); if (GlobalParameter.isEnableSimilarLabel()) { // label similarity is enabled while (itTAR.hasNext()) { TransitionLabelPair tlp = itTAR.next(); String tarString = tlp.getFirst().trim() + PetriNetTARsDocument.TARCONNECTOR + tlp.getSecond().trim(); HashSet<String> similarTars = new HashSet<String>(); TreeSet<SimilarLabelQueryResult> pres = labelIndex.getSimilarLabels(tlp.getFirst().trim(), GlobalParameter.getLabelSemanticSimilarity()); TreeSet<SimilarLabelQueryResult> sucs = labelIndex.getSimilarLabels(tlp.getSecond().trim(), GlobalParameter.getLabelSemanticSimilarity()); Iterator<SimilarLabelQueryResult> itPre = pres.iterator(); while (itPre.hasNext()) { String pre = itPre.next().getLabel(); Iterator<SimilarLabelQueryResult> itSuc = sucs.iterator(); while (itSuc.hasNext()) { String suc = itSuc.next().getLabel(); String tar = pre + PetriNetTARsDocument.TARCONNECTOR + suc; if (similarTars.add(tar)) { if (expandedTars.add(tar)) { Term term = new Term(PetriNetTARsDocument.FIELDTARS, tar); TermQuery termQuery = new TermQuery(term); bq.add(termQuery, Occur.SHOULD); } } } } if (similarTars.size() == 0) { similarTars.add(tarString); } exQueryTars.add(similarTars); } } else { // label similarity is not enabled while (itTAR.hasNext()) { TransitionLabelPair tlp = itTAR.next(); String tarString = tlp.getFirst().trim() + PetriNetTARsDocument.TARCONNECTOR + tlp.getSecond().trim(); HashSet<String> similarTars = new HashSet<String>(); similarTars.add(tarString); if (expandedTars.add(tarString)) { Term term = new Term(PetriNetTARsDocument.FIELDTARS, tarString); TermQuery termQuery = new TermQuery(term); bq.add(termQuery, Occur.SHOULD); } exQueryTars.add(similarTars); } } // while (itTAR.hasNext()) { // TransitionLabelPair tlp = itTAR.next(); // String tarString = tlp.getFirst().trim() // + PetriNetTARsDocument.TARCONNECTOR // + tlp.getSecond().trim(); // // HashSet<String> similarTars = new HashSet<String>(); // // // expand with its similar tars // if (GlobalParameter.isEnableSimilarLabel()) { // TreeSet<SimilarLabelQueryResult> pres = labelIndex // .getSimilarLabels(tlp.getFirst().trim(), // GlobalParameter // .getLabelSemanticSimilarity()); // // TreeSet<SimilarLabelQueryResult> sucs = labelIndex // .getSimilarLabels(tlp.getSecond().trim(), // GlobalParameter // .getLabelSemanticSimilarity()); // // Iterator<SimilarLabelQueryResult> itPre = pres // .iterator(); // while (itPre.hasNext()) { // String pre = itPre.next().getLabel(); // Iterator<SimilarLabelQueryResult> itSuc = sucs // .iterator(); // while (itSuc.hasNext()) { // String suc = itSuc.next().getLabel(); // String tar = pre // + PetriNetTARsDocument.TARCONNECTOR // + suc; // if (similarTars.add(tar)) { // if (expandedTars.add(tar)) { // Term term = new Term( // PetriNetTARsDocument.FIELDTARS, // tar); // TermQuery termQuery = new TermQuery( // term); // bq.add(termQuery, Occur.SHOULD); // } // } // } // } // // if (similarTars.size() == 0) { // similarTars.add(tarString); // } // // } else { // similarTars.add(tarString); // // if (expandedTars.add(tarString)) { // Term term = new Term( // PetriNetTARsDocument.FIELDTARS, tarString); // TermQuery termQuery = new TermQuery(term); // bq.add(termQuery, Occur.SHOULD); // } // } // // exQueryTars.add(similarTars); // } TARsQueryResultCollector collector = new TARsQueryResultCollector(reader, exQueryTars, similarity); searcher.search(bq, collector); ret = collector.getQueryResult(); searcher.close(); reader.close(); } } catch (Exception e) { e.printStackTrace(); } return ret; }
From source file:cn.edu.thss.iise.beehivez.server.index.petrinetindex.taskedgeindex.TaskEdgeLuceneIndex.java
License:Open Source License
@Override public TreeSet<ProcessQueryResult> getProcessModels(Object o, float similarity) { TreeSet<ProcessQueryResult> ret = new TreeSet<ProcessQueryResult>(); try {//from w ww . ja v a 2s. c o m if (o instanceof PetriNet) { PetriNet pn = (PetriNet) o; IndexReader reader = IndexReader.open(FSDirectory.open(INDEX_DIR), true); Searcher searcher = new IndexSearcher(reader); BooleanQuery bq = new BooleanQuery(); bq.setMaxClauseCount(Integer.MAX_VALUE); // make it sure that every queryterm is unique HashSet<String> expandedTaskEdges = new HashSet(); // expand the query task edges with their similar ones HashSet<HashSet<String>> exQueryTaskEdges = new HashSet<HashSet<String>>(); // calculate the task edges of query Petri net ArrayList<TaskLine4PetriNet> tls = TaskLine4PetriNet.getAllTaskLinesOfPetriNet(pn); if (GlobalParameter.isEnableSimilarLabel()) { // label similarity is enabled for (TaskLine4PetriNet tl : tls) { String taskEdgeString = tl.getSrcTransition().getIdentifier().trim() + PetriNetTaskEdgesDocument.TASKEDGECONNECTOR + tl.getDestTransition().getIdentifier().trim(); HashSet<String> similarTaskEdges = new HashSet<String>(); TreeSet<SimilarLabelQueryResult> pres = labelIndex.getSimilarLabels( tl.getSrcTransition().getIdentifier().trim(), GlobalParameter.getLabelSemanticSimilarity()); TreeSet<SimilarLabelQueryResult> sucs = labelIndex.getSimilarLabels( tl.getDestTransition().getIdentifier().trim(), GlobalParameter.getLabelSemanticSimilarity()); Iterator<SimilarLabelQueryResult> itPre = pres.iterator(); while (itPre.hasNext()) { String pre = itPre.next().getLabel(); Iterator<SimilarLabelQueryResult> itSuc = sucs.iterator(); while (itSuc.hasNext()) { String suc = itSuc.next().getLabel(); String taskEdge = pre + PetriNetTaskEdgesDocument.TASKEDGECONNECTOR + suc; if (similarTaskEdges.add(taskEdge)) { if (expandedTaskEdges.add(taskEdge)) { Term term = new Term(PetriNetTaskEdgesDocument.FIELDTASKEDGES, taskEdge); TermQuery termQuery = new TermQuery(term); bq.add(termQuery, Occur.SHOULD); } } } } if (similarTaskEdges.size() == 0) { similarTaskEdges.add(taskEdgeString); } exQueryTaskEdges.add(similarTaskEdges); } } else { // label similarity is not enabled for (TaskLine4PetriNet tl : tls) { String taskEdgeString = tl.getSrcTransition().getIdentifier().trim() + PetriNetTaskEdgesDocument.TASKEDGECONNECTOR + tl.getDestTransition().getIdentifier().trim(); HashSet<String> similarTaskEdges = new HashSet<String>(); similarTaskEdges.add(taskEdgeString); if (expandedTaskEdges.add(taskEdgeString)) { Term term = new Term(PetriNetTaskEdgesDocument.FIELDTASKEDGES, taskEdgeString); TermQuery termQuery = new TermQuery(term); bq.add(termQuery, Occur.SHOULD); } exQueryTaskEdges.add(similarTaskEdges); } } TaskEdgesQueryResultCollector collector = new TaskEdgesQueryResultCollector(reader, exQueryTaskEdges, similarity); searcher.search(bq, collector); TreeSet<ProcessQueryResult> temp = collector.getQueryResult(); searcher.close(); reader.close(); // verify the candidate model Iterator<ProcessQueryResult> it = temp.iterator(); while (it.hasNext()) { ProcessQueryResult pqr = it.next(); long id = pqr.getProcess_id(); DataManager dm = DataManager.getInstance(); PetriNet c = dm.getProcessPetriNet(id); float mcesSimilarity = PetriNetUtil.mcesSimilarity(c, pn); if (mcesSimilarity >= similarity) { ret.add(new ProcessQueryResult(id, mcesSimilarity)); } } } } catch (Exception e) { e.printStackTrace(); } return ret; }
From source file:cn.edu.thss.iise.beehivez.server.index.yawlindex.yawltasksluceneindex.YAWLTasksLuceneIndex.java
License:Open Source License
@Override public TreeSet<ProcessQueryResult> getProcessModels(Object o, float similarity) { TreeSet<ProcessQueryResult> ret = new TreeSet<ProcessQueryResult>(); try {/*from w ww . j a va2 s. co m*/ if (o instanceof YNet) { YNet query = (YNet) o; IndexReader reader = IndexReader.open(FSDirectory.open(INDEX_DIR), true); Searcher searcher = new IndexSearcher(reader); BooleanQuery bq = new BooleanQuery(); BooleanQuery.setMaxClauseCount(Integer.MAX_VALUE); // expand the tasks with their similar ones HashSet<String> expandedTasks = new HashSet<String>(); if (GlobalParameter.isEnableSimilarLabel()) { // label similarity is enabled for (YTask task : query.getNetTasks()) { String taskName = task.getName().trim(); if (expandedTasks.add(taskName)) { BooleanQuery subq = new BooleanQuery(); // Term term = new // Term(YAWLTasksDocument.FIELDTASKS, // taskName); // TermQuery termQuery = new TermQuery(term); // subq.add(termQuery, Occur.SHOULD); TreeSet<SimilarLabelQueryResult> similarTasks = labelIndex.getSimilarLabels(taskName, GlobalParameter.getLabelSemanticSimilarity()); Iterator<SimilarLabelQueryResult> it = similarTasks.iterator(); while (it.hasNext()) { SimilarLabelQueryResult sl = it.next(); String similarTaskName = sl.getLabel(); Term term = new Term(YAWLTasksDocument.FIELDTASKS, similarTaskName); TermQuery termQuery = new TermQuery(term); subq.add(termQuery, Occur.SHOULD); } if (subq.getClauses().length > 0) { bq.add(subq, Occur.MUST); } else { return ret; } } } } else { // label similarity is not enabled for (YTask task : query.getNetTasks()) { String taskName = task.getName().trim(); if (expandedTasks.add(taskName)) { Term term = new Term(YAWLTasksDocument.FIELDTASKS, taskName); TermQuery termQuery = new TermQuery(term); bq.add(termQuery, Occur.MUST); } } } // for (YTask task : query.getNetTasks()) { // String taskName = task.getName().trim(); // if (GlobalParameter.isEnableSimilarLabel()) { // // label similarity is enabled // if (expandedTasks.add(taskName)) { // BooleanQuery subq = new BooleanQuery(); // // Term term = new // // Term(YAWLTasksDocument.FIELDTASKS, // // taskName); // // TermQuery termQuery = new TermQuery(term); // // subq.add(termQuery, Occur.SHOULD); // // TreeSet<SimilarLabelQueryResult> similarTasks = labelIndex // .getSimilarLabels(taskName, GlobalParameter // .getLabelSemanticSimilarity()); // Iterator<SimilarLabelQueryResult> it = similarTasks // .iterator(); // while (it.hasNext()) { // SimilarLabelQueryResult sl = it.next(); // String similarTaskName = sl.getLabel(); // Term term = new Term( // YAWLTasksDocument.FIELDTASKS, // similarTaskName); // TermQuery termQuery = new TermQuery(term); // subq.add(termQuery, Occur.SHOULD); // } // if (subq.getClauses().length > 0) { // bq.add(subq, Occur.MUST); // } else { // return ret; // } // } // } else { // // label similarity is not enabled // if (expandedTasks.add(taskName)) { // Term term = new Term(YAWLTasksDocument.FIELDTASKS, // taskName); // TermQuery termQuery = new TermQuery(term); // bq.add(termQuery, Occur.MUST); // } // } // } YAWLTasksQueryResultCollector collector = new YAWLTasksQueryResultCollector(reader); searcher.search(bq, collector); ret = collector.getQueryResult(); searcher.close(); reader.close(); // sub graph isomorphism check using Ullman's algorithm // accurately match Iterator<ProcessQueryResult> it = ret.iterator(); while (it.hasNext()) { ProcessQueryResult pqr = it.next(); long process_id = pqr.getProcess_id(); DataManager dm = DataManager.getInstance(); YNet model = YAWLUtil.getYNetFromDefinition(dm.getProcessDefinitionBytes(process_id)); if (!Ullman4YAWL.subGraphIsomorphism(query, model)) { it.remove(); } // if (!VF24YAWL.subGraphIsomorphism(query, model)) { // it.remove(); // } } } } catch (Exception e) { e.printStackTrace(); } return ret; }
From source file:cn.fql.blogspider.SearchMain.java
License:Open Source License
public static void main(String[] args) throws Exception { String usage = "Usage:\tjava org.apache.lucene.demo.SearchFiles [-index dir] [-field f] [-repeat n] [-queries file] [-query string] [-raw] [-paging hitsPerPage]\n\nSee http://lucene.apache.org/core/4_1_0/demo/ for details."; if ((args.length > 0) && ((("-h".equals(args[0])) || ("-help".equals(args[0]))))) { System.out.println(usage); System.exit(0);/* w ww. j a v a2 s .c om*/ } String index = "D:\\test\\index"; String field = "contents"; String queries = null; String queryString = null; int hitsPerPage = 10; // for (int i = 0; i < args.length; ++i) // if ("-index".equals(args[i])) { // index = args[(i + 1)]; // ++i; // } else if ("-field".equals(args[i])) { // field = args[(i + 1)]; // ++i; // } else if ("-queries".equals(args[i])) { // queries = args[(i + 1)]; // ++i; // } else if ("-query".equals(args[i])) { // queryString = args[(i + 1)]; // ++i; // } else if ("-repeat".equals(args[i])) { // repeat = Integer.parseInt(args[(i + 1)]); // ++i; // } else if ("-raw".equals(args[i])) { // raw = true; // } else if ("-paging".equals(args[i])) { // hitsPerPage = Integer.parseInt(args[(i + 1)]); // if (hitsPerPage <= 0) { // System.err.println("There must be at least 1 hit per page."); // System.exit(1); // } // ++i; // } IndexReader reader = DirectoryReader.open(FSDirectory.open(new File(index))); IndexSearcher searcher = new IndexSearcher(reader); //Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_40); Analyzer analyzer = new IKAnalyzer(); BufferedReader in = null; if (queries != null) in = new BufferedReader(new InputStreamReader(new FileInputStream(queries), "UTF-8")); else in = new BufferedReader(new InputStreamReader(System.in, "UTF-8")); QueryParser parser = new QueryParser(Version.LUCENE_40, field, analyzer); while (true) { if ((queries == null) && (queryString == null)) { System.out.println("Enter query: "); } String line = (queryString != null) ? queryString : in.readLine(); if (line == null) break; if (line.length() == -1) { break; } line = line.trim(); if (line.length() == 0) { break; } Query query = parser.parse(line); System.out.println("Searching for: " + query.toString(field)); doPagingSearch(in, searcher, query, hitsPerPage, (queries == null) && (queryString == null)); if (queryString != null) break; } reader.close(); }
From source file:com.admarketplace.isg.lucene.demo.SearchFiles.java
License:Apache License
/** Simple command-line based search demo. */ public static void main(String[] args) throws Exception { String usage = "Usage:\tjava org.apache.lucene.demo.SearchFiles [-index dir] [-field f] [-repeat n] [-queries file] [-query string] [-raw] [-paging hitsPerPage]\n\nSee http://lucene.apache.org/core/4_1_0/demo/ for details."; if (args.length <= 0 || ("-h".equals(args[0]) || "-help".equals(args[0]))) { System.out.println(usage); System.exit(0);/* ww w .j a v a 2 s .com*/ } String index = "index"; String field = "contents"; String queries = null; int repeat = 0; boolean raw = false; String queryString = null; int hitsPerPage = 10; for (int i = 0; i < args.length; i++) { if ("-index".equals(args[i])) { index = args[i + 1]; i++; } else if ("-field".equals(args[i])) { field = args[i + 1]; i++; } else if ("-queries".equals(args[i])) { queries = args[i + 1]; i++; } else if ("-query".equals(args[i])) { queryString = args[i + 1]; i++; } else if ("-repeat".equals(args[i])) { repeat = Integer.parseInt(args[i + 1]); i++; } else if ("-raw".equals(args[i])) { raw = true; } else if ("-paging".equals(args[i])) { hitsPerPage = Integer.parseInt(args[i + 1]); if (hitsPerPage <= 0) { System.err.println("There must be at least 1 hit per page."); System.exit(1); } i++; } } IndexReader reader = DirectoryReader.open(FSDirectory.open(new File(index))); IndexSearcher searcher = new IndexSearcher(reader); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_40); BufferedReader in = null; if (queries != null) { in = new BufferedReader(new InputStreamReader(new FileInputStream(queries), "UTF-8")); } else { in = new BufferedReader(new InputStreamReader(System.in, "UTF-8")); } QueryParser parser = new QueryParser(Version.LUCENE_40, field, analyzer); while (true) { if (queries == null && queryString == null) { // prompt the user System.out.println("Enter query: "); } String line = queryString != null ? queryString : in.readLine(); if (line == null || line.length() == -1) { break; } line = line.trim(); if (line.length() == 0) { break; } Query query = parser.parse(line); System.out.println("Searching for: " + query.toString(field)); if (repeat > 0) { // repeat & time as benchmark Date start = new Date(); for (int i = 0; i < repeat; i++) { searcher.search(query, null, 100); } Date end = new Date(); System.out.println("Time: " + (end.getTime() - start.getTime()) + "ms"); } doPagingSearch(in, searcher, query, hitsPerPage, raw, queries == null && queryString == null); if (queryString != null) { break; } } reader.close(); }
From source file:com.agiletec.plugins.jacms.aps.system.services.searchengine.IndexerDAO.java
License:Open Source License
/** * Cancella un documento in base alla chiave (di nome "id") * mediante il quale stato indicizzato. * Nel caso della cancellazione di un contenuto il nome del campo * da utilizzare sar "id" mentre il valore sar l'identificativo del contenuto. * @param name Il nome del campo Field da utilizzare per recupero del documento. * @param value La chiave mediante il quale * stato indicizzato il documento.//from w w w . j a v a 2 s . co m * @throws ApsSystemException */ @Override public synchronized void delete(String name, String value) throws ApsSystemException { IndexReader reader = null; try { reader = IndexReader.open(this._dir, false); reader.deleteDocuments(new Term(name, value)); reader.close(); IndexWriter writer = new IndexWriter(this._dir, this.getAnalyzer(), false, new MaxFieldLength(IndexWriter.DEFAULT_MAX_FIELD_LENGTH)); writer.optimize(); writer.close(); } catch (IOException e) { throw new ApsSystemException("Errore nella cancellazione di un indice", e); } }
From source file:com.aliasi.lingmed.medline.IndexMedline.java
License:Lingpipe license
private String getLastUpdate(File index) throws IOException { System.out.println("Got index" + index); IndexReader reader = null; IndexSearcher searcher = null;//from w ww . j a v a2 s.c o m try { if (isNewDirectory(mIndex)) return LOW_SORT_STRING; Directory fsDir = FSDirectory.open(mIndex); reader = IndexReader.open(fsDir); searcher = new IndexSearcher(reader); Term term = new Term(Fields.MEDLINE_DIST_FIELD, Fields.MEDLINE_DIST_VALUE); SortField sortField = new SortField(Fields.MEDLINE_FILE_FIELD, SortField.STRING); Sort sort = new Sort(sortField); Query query = new TermQuery(term); TopFieldDocs results = searcher.search(query, null, 1, sort); if (results.totalHits == 0) { searcher.close(); reader.close(); return LOW_SORT_STRING; } // if (mLogger.isDebugEnabled()) // mLogger.debug("num MEDLINE_FILE docs: " + results.totalHits); Document d = searcher.doc(results.scoreDocs[0].doc); return d.get(Fields.MEDLINE_FILE_FIELD); } finally { if (searcher != null) searcher.close(); if (reader != null) reader.close(); } }