List of usage examples for org.apache.lucene.index IndexReader close
@Override public final synchronized void close() throws IOException
From source file:net.sf.jtmt.summarizers.LuceneSummarizer.java
License:Apache License
/** * Compute top term query.//from ww w . ja va 2s .c o m * * @param ramdir the ramdir * @return the query * @throws Exception the exception */ private Query computeTopTermQuery(Directory ramdir) throws Exception { final Map<String, Integer> frequencyMap = new HashMap<String, Integer>(); List<String> termlist = new ArrayList<String>(); IndexReader reader = IndexReader.open(ramdir, true); TermEnum terms = reader.terms(); while (terms.next()) { Term term = terms.term(); String termText = term.text(); int frequency = reader.docFreq(term); frequencyMap.put(termText, frequency); termlist.add(termText); } reader.close(); // sort the term map by frequency descending Collections.sort(termlist, new ReverseComparator<String>(new ByValueComparator<String, Integer>(frequencyMap))); // retrieve the top terms based on topTermCutoff List<String> topTerms = new ArrayList<String>(); float topFreq = -1.0F; for (String term : termlist) { if (topFreq < 0.0F) { // first term, capture the value topFreq = (float) frequencyMap.get(term); topTerms.add(term); } else { // not the first term, compute the ratio and discard if below // topTermCutoff score float ratio = (float) ((float) frequencyMap.get(term) / topFreq); if (ratio >= topTermCutoff) { topTerms.add(term); } else { break; } } } StringBuilder termBuf = new StringBuilder(); BooleanQuery q = new BooleanQuery(); for (String topTerm : topTerms) { termBuf.append(topTerm).append("(").append(frequencyMap.get(topTerm)).append(");"); q.add(new TermQuery(new Term("text", topTerm)), Occur.SHOULD); } System.out.println(">>> top terms: " + termBuf.toString()); System.out.println(">>> query: " + q.toString()); return q; }
From source file:net.sf.logsaw.index.internal.ARunWithIndexReader.java
License:Open Source License
/** * Opens a Lucene index reader, executes the callback method and then closes the reader. * @param log the log resource, may be <code>null</code> * @return any object or <code>null</code> * @throws CoreException if an <strong>expected</strong> error occurred *//* w ww. j a v a2 s. c o m*/ protected final T runWithIndexReader(ILogResource log) throws CoreException { IndexReader reader = null; try { reader = getFromQueryContextOrOpenIndexReader(log); try { return doRunWithIndexReader(reader, log); } finally { if ((queryContext == null) && (reader != null)) { // Close only if not in session logger.info("Closing index reader for '" + log.getName() + "'..."); //$NON-NLS-1$ //$NON-NLS-2$ reader.close(); } } } catch (CoreException e) { // Rethrow original CoreException throw e; } catch (Exception e) { // Unexpected exception; wrap with CoreException throw new CoreException(new Status(IStatus.ERROR, IndexPlugin.PLUGIN_ID, NLS.bind(Messages.LuceneIndexService_error_failedToReadIndex, new Object[] { log.getName(), e.getLocalizedMessage() }), e)); } }
From source file:net.sf.mmm.search.engine.impl.lucene.LuceneSearchEngine.java
License:Apache License
/** * {@inheritDoc}/*ww w .j ava2s. co m*/ */ @Override public synchronized boolean refresh() { try { boolean updated = this.fieldManager.refresh(); IndexReader oldReader = this.indexReader; this.indexReader = this.indexReader.reopen(); if (this.indexReader != oldReader) { getLogger().debug("search-index has changed and search-engine is refreshed!"); Searcher oldSearcher = this.searcher; this.searcher = new IndexSearcher(this.indexReader); try { oldSearcher.close(); } finally { oldReader.close(); } updated = true; } this.queryBuilder.refresh(); return updated; } catch (IOException e) { throw new RuntimeIoException(e, IoMode.READ); } }
From source file:net.skyatlas.icd.test.RAMDirectoryDemo.java
public static void main(String[] args) throws IOException { long startTime = System.currentTimeMillis(); System.err.println("*************************** ****************************"); RAMDirectory directory = new RAMDirectory(); Version matchVersion = Version.LUCENE_48; Analyzer analyzer = new StandardAnalyzer(matchVersion); IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_48, analyzer); iwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE); IndexWriter writer = new IndexWriter(directory, iwc); Document doc = new Document(); doc.add(new Field("name", "Chenghui", Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("sex", "", Field.Store.YES, Field.Index.NOT_ANALYZED)); doc.add(new Field("dosometing", "I am learning lucene ", Field.Store.YES, Field.Index.ANALYZED)); writer.addDocument(doc);/*from ww w. ja v a2s. c o m*/ writer.close(); IndexReader reader = DirectoryReader.open(directory); IndexSearcher searcher = new IndexSearcher(reader); Query query = new TermQuery(new Term("dosometing", "lucene")); TopDocs rs = searcher.search(query, null, 10); long endTime = System.currentTimeMillis(); System.out.println( "" + (endTime - startTime) + "" + rs.totalHits + "?"); for (int i = 0; i < rs.scoreDocs.length; i++) { // rs.scoreDocs[i].doc ??id, 0 Document firstHit = searcher.doc(rs.scoreDocs[i].doc); System.out.println("name:" + firstHit.getField("name").stringValue()); System.out.println("sex:" + firstHit.getField("sex").stringValue()); System.out.println("dosomething:" + firstHit.getField("dosometing").stringValue()); } reader.close(); directory.close(); System.out.println("*****************?**********************"); }
From source file:net.skyatlas.icd.util.MemoryGrid.java
public void searchDiagName(String diagName) throws IOException { IndexReader reader = DirectoryReader.open(this.directory); IndexSearcher searcher = new IndexSearcher(reader); Query query = new TermQuery(new Term("pathDesc", diagName)); TopDocs ts = searcher.search(query, null, 100); long endTime = System.currentTimeMillis(); for (int i = 0; i < ts.scoreDocs.length; i++) { // rs.scoreDocs[i].doc ??id, 0 Document firstHit = searcher.doc(ts.scoreDocs[i].doc); System.out.println("guid:" + firstHit.getField("guid").stringValue()); // System.out.println("sex:" + firstHit.getField("sex").stringValue()); System.out.println("pathDesc:" + firstHit.getField("pathDesc").stringValue()); }//from w w w . j a v a2s.com reader.close(); directory.close(); System.out.println("*****************?**********************"); }
From source file:net.strong.weblucene.WebLuceneAdminServlet.java
License:Apache License
/** * <p>// w w w .j a v a 2 s .c o m * Show configurations, reload them, manage the index and so on * </p> * * @param request - the request * @param response - the response * * @throws IOException - if an input or output error is detected when the * servlet handles the GET request * @throws ServletException - if the request for the GET could not be * handled */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { SimplePropertiesFactory factory = SimplePropertiesFactory.getInstance(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>WebLucene Admin Console</title>"); out.println("</head>"); out.println("<body>"); out.println("<table width='100%'>"); out.println("<tr>"); out.println("<td valign='top' style='background-color:#e0e0e0; width:184px;' nowrap>"); out.println("<h4>What Can I do?</h4>"); out.println("<ol>"); out.println("<li><a href='?action=show-status'>Show Configurations</a></li>"); out.println("<li><a href='?action=reload'>Reload Configurations</a></li>"); out.println("<li><a href='?action=delete'>Delete a Document</a></li>"); out.println("<li>Optimize the Index</li>"); /* out.println("<li><a href='?action=optimize'>Optimize the Index</a></li>"); */ out.println("<li><a href='/'>Go to Home Pgae</a></li>"); out.println("</ol>"); out.println("</td>"); out.println("<td width='4'> </td>"); out.println("<td valign='top'>"); String action = RequestParser.getString(request, "action", ""); if (!action.equals("")) { if (action.equals("reload")) { /* reload the configurations */ logger.info("begin to reload global configurations..."); factory.reactivateAllPropertiesSuppliers(); logger.info("configurations reloaded successfully!"); /* reset log options */ Properties logProperties = AbstractPropertiesConsumer.getProperties("log4j"); PropertyConfigurator.configure(logProperties); /* clean the templates stored in the cache */ logger.info("begin to release all xslt templates..."); XsltCache.flushAll(); logger.info("xslt template released successfully!"); out.println("configurations and xslt templates reloaded sucessfully!"); lastModify = new Date(); } else if (action.equals("delete")) { String indexLib = RequestParser.getString(request, "lib", ""); String indexDir = WebLucenePropertiesConsumer.getDirRealPath(indexLib); int docId = RequestParser.getInt(request, "docid", -1); if ((indexDir != null) && (docId != -1)) { /* delete a document with the doc-id */ logger.info("trying to delete the document with docId=" + docId + " in " + indexLib); try { if (!IndexReader.isLocked(indexDir)) { IndexReader reader = IndexReader.open(indexDir); reader.deleteDocument(docId); if (reader.isDeleted(docId)) { logger.info("document with docId=" + docId + " in " + indexLib + " was deleted successfully!"); out.println("Document with docId=" + docId + " in " + indexLib + " was deleted successfully!"); } reader.close(); } else { logger.info("unable to delete document with docId: " + docId + "--" + indexLib + " was locked!"); out.println(indexLib + " WAS LOCKED! NOTHIND DONE!"); } } catch (IOException ioe) { logger.error("faild to delete the document with docId: " + docId + " in " + indexLib + ": " + ioe.getMessage()); } } else { if (indexDir == null) { logger.info("failed to delete document from invalid index lib: " + indexLib); out.println("INVALID INDEX LIB! NOTHING DONE!"); } else { logger.info("failed to delete the document, the doc-id is invalid"); out.println("INVALID DOCID! NOTHING DONE!"); } out.println("<br>Usage: admin?action=delete&lib=$LIB&docid=$DOCID"); } } /** * not implemented now(may be it's dangerous to optimize index * online) else if(action.equals("optimize")) { String * indexLib=RequestParser.getString(request, "lib", ""); * if(!indexLib.equals("")) { logger.info("trying to optimize * index lib: " + indexLib); logger.info("index lib: " + indexLib * + " was optimized successfully!"); out.println("Index Lib: " + * indexLib + " was optimized successfully!"); } else { * logger.info("failed to optimize the invalid index lib: " + * indexLib ); out.println("INVALID INDEX LIB: " + indexLib + ", * NOTHING DONE"); }} */ else if (!action.equals("show-status")) { out.println("INVALID OPTION: " + action); } } if (action.equals("show-status") || action.equals("reload") || action.equals("")) { out.println("<h3>Configurations: (Last Modified:"); out.println(lastModify.toString()); out.println(")</h3>"); out.println("<hr>"); /* show the state of all appllications */ Set types = factory.getPropertyTypes(); Iterator iterator = types.iterator(); while (iterator.hasNext()) { String type = (String) iterator.next(); out.println("<h4>" + type + "</h4>"); if (WebLucenePropertiesConsumer.getProperties(type) != null) { Properties properties = WebLucenePropertiesConsumer.getProperties(type); Enumeration proNames = properties.propertyNames(); while (proNames.hasMoreElements()) { String name = (String) proNames.nextElement(); out.println(name + " : " + properties.getProperty(name) + "<br>"); } } } } out.println("</td>"); out.println("</tr>"); out.println("</table>"); out.println("</body>"); out.println("</html>"); /* flush the buffer */ out.flush(); out.close(); }
From source file:newseman.lucene.whisperer.SearchFiles.java
License:Apache License
/** Simple command-line based search demo. */ public static void main(String[] args) throws Exception { String usage = "Usage:\tjava newseman.searcher.SearchFiles [-index dir] [-field f] [-repeat n] [-queries file] [-raw] [-norms field] [-paging hitsPerPage]"; usage += "\n\tSpecify 'false' for hitsPerPage to use streaming instead of paging search."; if (args.length == 0 || (args.length > 0 && ("-h".equals(args[0]) || "-help".equals(args[0])))) { System.out.println(usage); System.exit(0);/*w w w.j a va 2 s. c o m*/ } String index = "index"; String field = "key"; String queries = null; int repeat = 0; boolean raw = false; String normsField = null; boolean paging = true; boolean spellcheck = false; 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 ("-repeat".equals(args[i])) { repeat = Integer.parseInt(args[i + 1]); i++; } else if ("-raw".equals(args[i])) { raw = true; } else if ("-norms".equals(args[i])) { normsField = args[i + 1]; i++; } else if ("-spellcheck".equals(args[i])) { spellcheck = true; i++; } else if ("-paging".equals(args[i])) { if (args[i + 1].equals("false")) { paging = false; } else { hitsPerPage = Integer.parseInt(args[i + 1]); if (hitsPerPage == 0) { paging = false; } } i++; } } FSDirectory indexDir = FSDirectory.open(new File(index)); IndexReader reader = IndexReader.open(indexDir, true); // only searching, so read-only=true if (normsField != null) reader = new OneNormsReader(reader, normsField); Searcher searcher = new IndexSearcher(reader); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT); BufferedReader in = null; if (queries != null) { in = new BufferedReader(new FileReader(queries)); } else { in = new BufferedReader(new InputStreamReader(System.in, "UTF-8")); } QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field, analyzer); while (true) { if (queries == null) // prompt the user System.out.println("Enter query: "); String line = 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"); } if (spellcheck) { doSpellSearch(indexDir, in, searcher, query, hitsPerPage, raw, queries == null); } else if (paging) { doPagingSearch(in, searcher, query, hitsPerPage, raw, queries == null); } else { doStreamingSearch(searcher, query); } } reader.close(); }
From source file:nl.knaw.huygens.timbuctoo.lucene.demoTwo.SearchFiles.java
License:Apache License
/** Simple command-line based search demo. */ public static void main(String[] args) throws Exception { Date start = new Date(); 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 w w w .j a v a 2s . 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++; } } field = "author"; queryString = "bront"; IndexReader reader = DirectoryReader.open(FSDirectory.open(Paths.get(index))); IndexSearcher searcher = new IndexSearcher(reader); Analyzer analyzer = new MySearchAnalyzer(); 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)); } QueryBuilder builder = new QueryBuilder(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 = builder.createPhraseQuery(field, line); System.out.println("field: " + field); System.out.println("query: " + line); System.out.println("Searching for: " + query.toString(field)); if (repeat > 0) { // repeat & time as benchmark 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(); Date end = new Date(); System.out.println("Time: " + (end.getTime() - start.getTime()) + "ms"); }
From source file:nl.strohalm.cyclos.dao.ads.AdDAOImpl.java
License:Open Source License
public List<AdCategoryWithCounterVO> getCategoriesWithCounters(final List<AdCategory> categories, final AdCategoryWithCounterQuery acQuery) { IndexReader reader = null; IndexSearcher searcher = null;// w w w .ja va 2 s. c o m List<AdCategoryWithCounterVO> result = new ArrayList<AdCategoryWithCounterVO>(categories.size()); try { reader = indexHandler.openReader(Ad.class); searcher = new IndexSearcher(reader); FullTextAdQuery adQuery = new FullTextAdQuery(); adQuery.setStatus(Ad.Status.ACTIVE); adQuery.setTradeType(acQuery.getTradeType()); if (acQuery.isExternalPublication()) { adQuery.setExternalPublication(true); } Long[] groupIds = acQuery.getGroupIds(); if (groupIds != null) { adQuery.setGroups( Arrays.asList(EntityHelper.references(MemberGroup.class, Arrays.asList(groupIds)))); } FullTextSearchElements elements = prepare(adQuery); Query query = elements.getQuery(); Filters baseFilters = elements.getFilters(); for (AdCategory adCategory : categories) { AdCategoryWithCounterVO counter = createCounter(searcher, query, baseFilters, adCategory, null, 1); result.add(counter); } return result; } catch (Exception e) { throw new DaoException(e); } finally { try { searcher.close(); } catch (final Exception e) { // Silently ignore } try { reader.close(); } catch (final Exception e) { // Silently ignore } } }
From source file:nl.strohalm.cyclos.utils.lucene.IndexHandler.java
License:Open Source License
/** * Returns the index status for the given entity type *//*w ww .j a va2 s. c o m*/ public IndexStatus getIndexStatus(final Class<? extends Indexable> entityType) { IndexReader reader; try { reader = doOpenReader(entityType); } catch (final FileNotFoundException e) { return IndexStatus.MISSING; } catch (final IOException e) { return IndexStatus.CORRUPT; } try { // The isCurrent call will force the check for corrupted indexes reader.isCurrent(); return IndexStatus.ACTIVE; } catch (final CorruptIndexException e) { return IndexStatus.CORRUPT; } catch (final Exception e) { LOG.warn("Error while retrieving the index status for " + entityType, e); throw new DaoException(e); } finally { try { reader.close(); } catch (final IOException e) { // Silently ignore } } }