List of usage examples for org.apache.lucene.index IndexReader close
@Override public final synchronized void close() throws IOException
From source file: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);//from ww w . j ava 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(Paths.get(index))); IndexSearcher searcher = new IndexSearcher(reader); Analyzer analyzer = new StandardAnalyzer(); BufferedReader in = null; if (queries != null) { in = Files.newBufferedReader(Paths.get(queries), StandardCharsets.UTF_8); } else { in = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); } QueryParser parser = new QueryParser(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, 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:Demo1.MyServlet.java
private void gotoSearch(PrintWriter out, HttpServletRequest request, HttpServletResponse response) { try {/*from w ww .j a v a2 s . co m*/ // Text to search String querystr = request.getParameter("keyword"); log.addHistory(querystr); // The \"title\" arg specifies the default field to use when no field is explicitly specified in the query Query q = new QueryParser("Searching", analyzer).parse(querystr); // Searching code int hitsPerPage = 10; IndexReader reader = DirectoryReader.open(index); IndexSearcher searcher = new IndexSearcher(reader); TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage); searcher.search(q, collector); ScoreDoc[] hits = collector.topDocs().scoreDocs; // Code to display the results of search //out.println("Found " + hits.length + " Classes Matching your Requirement"); courseList = new ArrayList(); for (int i = 0; i < hits.length; ++i) { int docId = hits[i].doc; Document d = searcher.doc(docId); Land course = new Land(d.get("name"), d.get("price"), d.get("area"), d.get("purpose")); //out.println((i + 1) + ". " + d.get("Number")+ d.get("Classes") ); courseList.add(course); } request.setAttribute("Lands", courseList); RequestDispatcher de = request.getRequestDispatcher("/table.jsp"); de.forward(request, response); // reader can only be closed when there is no need to access the documents any more reader.close(); } catch (Exception e) { System.out.println(e.getMessage()); } }
From source file:Demo2.MyServlet.java
private void gotoSearch(PrintWriter out, HttpServletRequest request, HttpServletResponse response) { try {//w w w . j ava 2s . c o m // Text to search String querystr = request.getParameter("keyword"); log.addHistory(querystr); // The \"title\" arg specifies the default field to use when no field is explicitly specified in the query Query q = new QueryParser("Classes", analyzer).parse(querystr); // Searching code int hitsPerPage = 10; IndexReader reader = DirectoryReader.open(index); IndexSearcher searcher = new IndexSearcher(reader); TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage); searcher.search(q, collector); ScoreDoc[] hits = collector.topDocs().scoreDocs; // Code to display the results of search //out.println("Found " + hits.length + " Classes Matching your Requirement"); courseList = new ArrayList(); for (int i = 0; i < hits.length; ++i) { int docId = hits[i].doc; Document d = searcher.doc(docId); Child course = new Child(d.get("Number"), d.get("Classes"), d.get("Time"), d.get("Department")); //out.println((i + 1) + ". " + d.get("Number")+ d.get("Classes") ); courseList.add(course); } request.setAttribute("course", courseList); RequestDispatcher de = request.getRequestDispatcher("/table.jsp"); de.forward(request, response); // reader can only be closed when there is no need to access the documents any more reader.close(); } catch (Exception e) { System.out.println(e.getMessage()); } }
From source file:dk.defxws.fgslucene.OperationsImpl.java
License:Open Source License
private void getIndexReaderAndSearcher(String indexName) throws GenericSearchException { IndexReader irreopened = null; if (ir != null) { try {//from w w w. j ava2 s .c om irreopened = IndexReader.openIfChanged(ir); } catch (Exception e) { throw new GenericSearchException("IndexReader reopen error indexName=" + indexName + " :\n", e); } if (null != irreopened) { try { ir.close(); } catch (Exception e) { ir = null; try { irreopened.close(); } catch (Exception e1) { } throw new GenericSearchException( "IndexReader close after reopen error indexName=" + indexName + " :\n", e); } ir = irreopened; } } else { try { closeIndexReaderAndSearcher(indexName); Directory dir = new SimpleFSDirectory(new File(config.getIndexDir(indexName))); ir = IndexReader.open(dir); } catch (Exception e) { throw new GenericSearchException("IndexReader open error indexName=" + indexName + " :\n", e); } searcher = new IndexSearcher(ir); } docCount = ir.numDocs(); if (logger.isDebugEnabled()) logger.debug("getIndexReaderAndSearcher indexName=" + indexName + " docCount=" + docCount); }
From source file:dk.statsbiblioteket.netark.dvenabler.DVReaderTest.java
License:Apache License
public void testLargerDVEnableIndex() throws IOException { final int DOCS = 1000; log.info("testLargerDVEnableIndex started"); final File INDEX_SRC = generateIndex(DOCS); final File INDEX_DEST = new File("target/testindex.deletefreely.dest"); try {/*from www. j a v a 2 s .c om*/ IndexUtils.convert(INDEX_SRC, INDEX_DEST, createDVFieldDescriptions(INDEX_SRC)); IndexReader readerSrc = DirectoryReader.open(MMapDirectory.open(INDEX_SRC)); IndexReader readerDest = DirectoryReader.open(MMapDirectory.open(INDEX_DEST)); long multiCount = 0; long singleCount = 0; long longCount = 0; long doubleCount = 0; for (int docID = 0; docID < DOCS; docID++) { { String[] multisSrc = readerSrc.document(docID).getValues(MULTI); if (multisSrc != null) { List<String> dvs = getSortedSetDocValues(readerDest, docID, MULTI); Arrays.sort(multisSrc); Collections.sort(dvs); assertEquals("There should be as many DV as stored for field " + MULTI, multisSrc.length, dvs.size()); for (int i = 0; i < multisSrc.length; i++) { assertEquals("Value " + i + " for field " + MULTI + " should be equal", multisSrc[i], dvs.get(i)); multiCount++; } } } { String singleSrc = readerSrc.document(docID).get(SINGLE); if (singleSrc != null) { String dv = getSortedDocValue(readerDest, docID, SINGLE); assertEquals("The DV for field " + SINGLE + " should match the stored value", singleSrc, dv); singleCount++; } } { IndexableField fieldSrc = readerSrc.document(docID).getField(LONG); if (fieldSrc != null) { long longSrc = fieldSrc.numericValue().longValue(); long dv = getLongDocValue(readerDest, docID, LONG); assertEquals("The DV for field " + LONG + " should match the stored value", longSrc, dv); longCount++; } } { IndexableField fieldSrc = readerSrc.document(docID).getField(DOUBLE); if (fieldSrc != null) { double doubleSrc = fieldSrc.numericValue().doubleValue(); double dv = getDoubleDocValue(readerDest, docID, DOUBLE); assertEquals("The DV for field " + DOUBLE + " should match the stored value", doubleSrc, dv); doubleCount++; } } } assertTrue("There should be at least 1 value for field " + MULTI + " in a document", multiCount > 0); assertTrue("There should be at least 1 value for field " + SINGLE + " in a document", singleCount > 0); assertTrue("There should be at least 1 value for field " + LONG + " in a document", longCount > 0); assertTrue("There should be at least 1 value for field " + DOUBLE + " in a document", doubleCount > 0); readerSrc.close(); readerDest.close(); } finally { delete(INDEX_SRC); delete(INDEX_DEST); } }
From source file:dk.statsbiblioteket.netark.dvenabler.DVReaderTest.java
License:Apache License
public static void assertIndexValues(File index, boolean dvExpected) throws IOException, ParseException { IndexReader reader = DirectoryReader.open(MMapDirectory.open(index)); IndexSearcher searcher = new IndexSearcher(reader); try {// ww w.j a v a2s .c om assertIndexValues(reader, searcher, dvExpected); } finally { reader.close(); } }
From source file:dkpro.similarity.algorithms.vsm.store.convert.ConvertLuceneToVectorIndex.java
License:Apache License
public static void main(String[] args) throws Exception { File inputPath = new File(args[0]); File outputPath = new File(args[1]); deleteQuietly(outputPath);//from w w w .ja v a 2 s . c o m outputPath.mkdirs(); boolean ignoreNumerics = true; boolean ignoreCardinal = true; boolean ignoreMonetary = true; int minTermLength = 3; int minDocFreq = 5; System.out.println("Quality criteria"); System.out.println("Minimum term length : " + minTermLength); System.out.println("Minimum document frequency : " + minDocFreq); System.out.println("Ignore numeric tokens : " + ignoreNumerics); System.out.println("Ignore cardinal numeric tokens : " + ignoreNumerics); System.out.println("Ignore money values : " + ignoreMonetary); System.out.print("Fetching terms list... "); IndexReader reader = IndexReader.open(FSDirectory.open(inputPath)); TermEnum termEnum = reader.terms(); Set<String> terms = new HashSet<String>(); int ignoredTerms = 0; while (termEnum.next()) { String term = termEnum.term().text(); if (((minTermLength > 0) && (term.length() < minTermLength)) || (ignoreCardinal && isCardinal(term)) || (ignoreMonetary && isMonetary(term)) || (ignoreNumerics && isNumericSpace(term)) || ((minDocFreq > 0) && (termEnum.docFreq() < minDocFreq))) { ignoredTerms++; continue; } terms.add(term); } reader.close(); System.out.println(terms.size() + " terms found. " + ignoredTerms + " terms ignored."); System.out.println("Opening source ESA index " + inputPath); VectorReader source = new LuceneVectorReader(inputPath); System.out.println("Opening destination ESA index " + inputPath); VectorIndexWriter esaWriter = new VectorIndexWriter(outputPath, source.getConceptCount()); ProgressMeter p = new ProgressMeter(terms.size()); for (String term : terms) { Vector vector = source.getVector(term); esaWriter.put(term, vector); p.next(); System.out.println("[" + term + "] " + p); } esaWriter.close(); }
From source file:dkpro.similarity.uima.vsm.esaindexer.IndexInverter.java
License:Apache License
public void createInvertedIndex() throws CorruptIndexException, IOException, SimilarityException { deleteQuietly(invertedIndexDir);//from w ww . j a va 2s.c o m if (!invertedIndexDir.mkdirs()) { throw new IOException("Cannot create folder: " + invertedIndexDir); } final IndexReader reader = IndexReader.open(FSDirectory.open(luceneIndexDir)); final TermEnum termEnum = reader.terms(); final Set<String> terms = new HashSet<String>(); int totalTerms = 0; while (termEnum.next()) { final String term = termEnum.term().text(); final int termDocFreq = termEnum.docFreq(); if (minDocumentFrequency <= termDocFreq) { terms.add(term); } totalTerms++; } reader.close(); System.out.println("Using " + terms.size() + " terms out of " + totalTerms); System.out.println("Input Lucene index: " + luceneIndexDir); final LuceneVectorReader luceneVectorReader = new LuceneVectorReader(luceneIndexDir); configureLuceneVectorReader(luceneVectorReader); System.out.println("Output inverted index: " + invertedIndexDir); final VectorIndexWriter vectorIndexWriter = new VectorIndexWriter(invertedIndexDir, luceneVectorReader.getConceptCount()); final ProgressMeter progressMeter = new ProgressMeter(terms.size()); for (String term : terms) { final Vector vector = luceneVectorReader.getVector(term); vectorIndexWriter.put(term, vector); progressMeter.next(); System.out.println("[" + term + "] " + progressMeter); } vectorIndexWriter.close(); }
From source file:Dl4j.TermInfo.java
public LuceneDocFetcher(Directory dir, ArrayList<String> docIds) throws Exception { globalTermId = 0;//w ww . j a v a 2 s .c om termSeen = new HashMap<>(); IndexReader reader = DirectoryReader.open(dir); // totalExamples = reader.numDocs(); //++Procheta totalExamples = docIds.size(); docWordMaps = new ArrayList<>(totalExamples); // build the per-doc word maps for (int i = 0; i < totalExamples; i++) { IndexSearcher searcher = new IndexSearcher(reader); Similarity sm = new DefaultSimilarity(); searcher.setSimilarity(sm); Analyzer analyzer = new KeywordAnalyzer(); //System.out.println(id); QueryParser queryParser = new QueryParser("id", analyzer); Query query = queryParser.parse(docIds.get(i)); TopDocs topDocs = searcher.search(query, 3); //System.out.println(query.toString()); ScoreDoc[] hits = topDocs.scoreDocs; // System.out.println(hits.length); Document doc = searcher.doc(hits[0].doc); docWordMaps.add(buildTerms(reader, hits[0].doc)); } // iterate through the word maps and build the one-hot vectors List<DataSet> allDocVecs = new ArrayList<>(totalExamples); for (Map<String, TermInfo> docwordMap : docWordMaps) { allDocVecs.add(constructTermVector(docwordMap)); } // Merge all doc vecs into one dataset this.dataSet = DataSet.merge(allDocVecs); reader.close(); }
From source file:Dl4j.TermInfo.java
public LuceneDocFetcher(Directory dir, ArrayList<String> docIds, ArrayList<String> labels) throws Exception { globalTermId = 0;//w w w. j a va 2s . c o m termSeen = new HashMap<>(); IndexReader reader = DirectoryReader.open(dir); // totalExamples = reader.numDocs(); //++Procheta totalExamples = docIds.size(); docWordMaps = new ArrayList<>(totalExamples); // build the per-doc word maps for (int i = 0; i < totalExamples; i++) { IndexSearcher searcher = new IndexSearcher(reader); Similarity sm = new DefaultSimilarity(); searcher.setSimilarity(sm); Analyzer analyzer = new KeywordAnalyzer(); //System.out.println(id); QueryParser queryParser = new QueryParser("id", analyzer); Query query = queryParser.parse(docIds.get(i)); TopDocs topDocs = searcher.search(query, 3); //System.out.println(query.toString()); ScoreDoc[] hits = topDocs.scoreDocs; // System.out.println(hits.length); Document doc = searcher.doc(hits[0].doc); docWordMaps.add(buildTerms(reader, hits[0].doc)); } // iterate through the word maps and build the one-hot vectors List<DataSet> allDocVecs = new ArrayList<>(totalExamples); for (Map<String, TermInfo> docwordMap : docWordMaps) { allDocVecs.add(constructTermVector(docwordMap, labels)); } // Merge all doc vecs into one dataset this.dataSet = DataSet.merge(allDocVecs); reader.close(); }