List of usage examples for org.apache.lucene.index IndexReader close
@Override public final synchronized void close() throws IOException
From source file:g.t.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 va 2 s .c o m } String index = "D:\\test\\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:gatchan.jedit.lucene.AbstractIndex.java
License:Open Source License
public void close() { Log.log(Log.DEBUG, this, "close()"); closeWriter();// w ww.ja v a 2 s .co m Set<IndexReader> readerSet = readerMap.keySet(); Iterator<IndexReader> it = readerSet.iterator(); while (it.hasNext()) { IndexReader indexReader = it.next(); try { indexReader.close(); it.remove(); } catch (IOException e) { Log.log(Log.ERROR, this, "Unable to close reader", e); } } if (reader != null) { try { reader.close(); reader = null; } catch (IOException e) { Log.log(Log.ERROR, this, "Unable to close reader", e); } } if (!readerMap.isEmpty() || reader != null) { Log.log(Log.DEBUG, this, "The index was not closed"); } }
From source file:gatchan.jedit.lucene.AbstractIndex.java
License:Open Source License
private void initReader() { if (reader == null) { try {//from www . java 2s. c om reader = IndexReader.open(FSDirectory.open(path)); readerMap.put(reader, 0); } catch (IOException e) { Log.log(Log.ERROR, this, "Unable to open IndexReader", e); } } else { try { IndexReader reader = IndexReader.openIfChanged(this.reader); if (reader != null) { IndexReader oldReader = this.reader; readerMap.put(reader, 0); this.reader = reader; int count = readerMap.get(oldReader); if (count == 0) { try { readerMap.remove(oldReader); oldReader.close(); } catch (IOException e) { Log.log(Log.ERROR, "Error while closing the previous reader", e); } } } } catch (IOException e) { Log.log(Log.ERROR, this, "Unable to open reopen IndexReader", e); } } }
From source file:gate.creole.ir.lucene.LuceneIndexManager.java
License:Open Source License
/** Reindexing changed documents, removing removed documents and * add to the index new corpus documents. */ @Override/*from ww w .j a v a 2s.com*/ public void sync(List<Document> added, List<String> removedIDs, List<Document> changed) throws IndexException { String location = indexDefinition.getIndexLocation(); try { IndexReader reader = IndexReader.open(FSDirectory.open(new File(location)), false); for (int i = 0; i < removedIDs.size(); i++) { String id = removedIDs.get(i).toString(); org.apache.lucene.index.Term term = new org.apache.lucene.index.Term(DOCUMENT_ID, id); reader.deleteDocuments(term); } //for (remove all removed documents) for (int i = 0; i < changed.size(); i++) { gate.Document gateDoc = changed.get(i); String id = gateDoc.getLRPersistenceId().toString(); org.apache.lucene.index.Term term = new org.apache.lucene.index.Term(DOCUMENT_ID, id); reader.deleteDocuments(term); } //for (remove all changed documents) reader.close(); /*IndexWriter writer = new IndexWriter( FSDirectory.open(new File(location)), new SimpleAnalyzer(Version.LUCENE_30), false, new IndexWriter.MaxFieldLength(IndexWriter.DEFAULT_MAX_FIELD_LENGTH) );*/ IndexWriter writer = new IndexWriter(FSDirectory.open(new File(location)), new IndexWriterConfig(Version.LUCENE_31, new SimpleAnalyzer(Version.LUCENE_30)) .setOpenMode(OpenMode.APPEND)); for (int i = 0; i < added.size(); i++) { gate.Document gateDoc = added.get(i); writer.addDocument(getLuceneDoc(gateDoc)); } //for (add all added documents) for (int i = 0; i < changed.size(); i++) { gate.Document gateDoc = changed.get(i); writer.addDocument(getLuceneDoc(gateDoc)); } //for (add all changed documents) writer.close(); } catch (java.io.IOException ioe) { throw new IndexException(ioe.getMessage()); } }
From source file:gogoph.search.Server.java
License:Open Source License
/** * @param args/*w w w . j a v a 2s.c o m*/ * @throws IOException * @throws ParseException */ public static void main(String[] args) throws IOException, ParseException { Directory index; index = new SimpleFSDirectory(new File(args[0])); String searchTerms = args[1]; StandardAnalyzer analyzer; // 0. Specify the analyzer for tokenizing text. // The same analyzer should be used for indexing and searching analyzer = new StandardAnalyzer(Version.LUCENE_35); QueryParser parser = new QueryParser(Version.LUCENE_35, "content", analyzer); Query query = parser.parse(searchTerms); // 3. search int hitsPerPage = 40; IndexReader reader = IndexReader.open(index); IndexSearcher searcher = new IndexSearcher(reader); TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true); searcher.search(query, collector); ScoreDoc[] hits = collector.topDocs().scoreDocs; // 4. display results SearchResult[] tab = new SearchResult[hits.length]; //System.out.println("Found " + hits.length + " hits."); for (int i = 0; i < hits.length; ++i) { int docId = hits[i].doc; Document d = searcher.doc(docId); //System.out.println((i + 1) + ". " + d.get("title")); GopherDirectoryEntity gop = new GopherDirectoryEntity(); gop.setType(d.get("type")); gop.setUsername(d.get("title")); gop.setHost(d.get("host")); gop.setPort(Integer.parseInt(d.get("port"))); gop.setSelector(d.get("selector")); tab[i] = new SearchResult(gop.getUsername(), gop, hits[i].score); } // searcher can only be closed when there // is no need to access the documents any more. searcher.close(); reader.close(); ArrayList<GopherDirectoryEntity> tib; tib = new ArrayList<GopherDirectoryEntity>(); for (int i = 0; i < tab.length; i++) { SearchResult item = tab[i]; GopherDirectoryEntity node = item.getEntity(); node.setUsername("(Score: " + item.getScore() + ") " + item.getTitle()); GopherDirectoryEntity nodeComment = newComment("gopher://" + node.getHost() + ":" + node.getPort() + "/" + node.getType() + node.getSelector()); //GopherDirectoryEntity nodeComment2 = // GopherDirectoryEntity.newComment(node.getUserName()); tib.add(node); tib.add(nodeComment); //tab.add(nodeComment2); } index.close(); // Load index for (GopherDirectoryEntity item : tib) { System.out.print(item.getType() + item.getUsername() + "\t" + item.getSelector() + "\t" + item.getHost() + "\t" + item.getPort() + "\r\n"); } }
From source file:gov.ssa.test.lucenedemo.SearchFiles.java
/** * Simple command-line based search demo. *//*from w w w . j a va 2s. c o m*/ public void findThisString(String _idxDir, String _srchTerm) { String index = _idxDir; String field = "contents"; String queries = null; int repeat = 0; boolean raw = true; String queryString = _srchTerm; int hitsPerPage = 1; try { IndexReader reader = DirectoryReader.open(FSDirectory.open(Paths.get(index))); IndexSearcher searcher = new IndexSearcher(reader); Analyzer analyzer = new StandardAnalyzer(); BufferedReader in = null; Integer count = 0; 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 (count == 0) { 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(); } catch (Exception ex) { ex.printStackTrace(); } }
From source file:hellolucene.HelloLucene.java
public static void main(String[] args) throws IOException, ParseException { // 0. Specify the analyzer for tokenizing text. // The same analyzer should be used for indexing and searching StandardAnalyzer analyzer = new StandardAnalyzer(Version.LATEST); // 1. create the index Directory index = new RAMDirectory(); IndexWriterConfig config = new IndexWriterConfig(Version.LATEST, analyzer); IndexWriter w = new IndexWriter(index, config); addDoc(w, "Lucene in Action", "193398817"); addDoc(w, "Lucene for Dummies", "55320055Z"); addDoc(w, "Managing Gigabytes", "55063554A"); addDoc(w, "The Art of Computer Science", "9900333X"); w.close();/* w w w . j ava2 s. c om*/ // 2. query String querystr = args.length > 0 ? args[0] : "lucene"; // the "title" arg specifies the default field to use // when no field is explicitly specified in the query. Query q = new QueryParser(Version.LATEST, "title", analyzer).parse(querystr); // 3. search int hitsPerPage = 10; IndexReader reader = DirectoryReader.open(index); IndexSearcher searcher = new IndexSearcher(reader); TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true); searcher.search(q, collector); ScoreDoc[] hits = collector.topDocs().scoreDocs; // 4. display results System.out.println("Found " + hits.length + " hits."); for (int i = 0; i < hits.length; ++i) { int docId = hits[i].doc; Document d = searcher.doc(docId); System.out.println((i + 1) + ". " + d.get("isbn") + "\t" + d.get("title")); } // reader can only be closed when there // is no need to access the documents any more. reader.close(); }
From source file:HW1.SearchFiles.java
License:Apache License
public static void main(String[] args) throws Exception { String queryString = "dislike football"; String indexPath = "/Users/yangyang/Desktop/lucene/hw1/index/index04"; IndexReader reader = DirectoryReader.open(FSDirectory.open(Paths.get(indexPath))); IndexSearcher searcher = new IndexSearcher(reader); Analyzer analyzer = new StandardAnalyzer(); searcher.setSimilarity(new BM25Similarity()); QueryParser parser = new QueryParser("TEXT", analyzer); Query query = parser.parse(queryString); System.out.println("Searching for: " + query.toString("TEXT")); TopDocs results = searcher.search(query, 10); ScoreDoc[] hits = results.scoreDocs; int numTotalHits = results.totalHits; System.out.println(numTotalHits + " total matching documents"); for (int i = 0; i < hits.length; i++) { Document doc = searcher.doc(hits[i].doc); System.out.println("DOCNO: " + doc.get("DOCNO")); }//from w w w.ja v a 2 s .c o m reader.close(); }
From source file:ikanalyzer.LuceneIndexAndSearchDemo.java
License:Apache License
/** * ???// w w w . j a va2s . co m * * @param args */ public static void main(String[] args) { // Lucene Document?? String fieldName = "text"; // String text = "IK Analyzer???????"; // IKAnalyzer? Analyzer analyzer = new IKAnalyzer(true); Directory directory = null; IndexWriter iwriter = null; IndexReader ireader = null; IndexSearcher isearcher = null; try { // directory = new RAMDirectory(); // ?IndexWriterConfig IndexWriterConfig iwConfig = new IndexWriterConfig(analyzer); iwConfig.setOpenMode(OpenMode.CREATE_OR_APPEND); iwriter = new IndexWriter(directory, iwConfig); // Document doc = new Document(); doc.add(new StringField("ID", "10000", Field.Store.YES)); doc.add(new TextField(fieldName, text, Field.Store.YES)); iwriter.addDocument(doc); iwriter.close(); // ?********************************** // ? ireader = DirectoryReader.open(directory); isearcher = new IndexSearcher(ireader); String keyword = "?"; // QueryParser?Query QueryParser qp = new QueryParser(fieldName, analyzer); qp.setDefaultOperator(QueryParser.AND_OPERATOR); Query query = qp.parse(keyword); System.out.println("Query = " + query); // ?5? TopDocs topDocs = isearcher.search(query, 5); System.out.println("" + topDocs.totalHits); // ScoreDoc[] scoreDocs = topDocs.scoreDocs; for (int i = 0; i < topDocs.totalHits; i++) { Document targetDoc = isearcher.doc(scoreDocs[i].doc); System.out.println("" + targetDoc.toString()); } } catch (CorruptIndexException e) { e.printStackTrace(); } catch (LockObtainFailedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } finally { if (ireader != null) { try { ireader.close(); } catch (IOException e) { e.printStackTrace(); } } if (directory != null) { try { directory.close(); } catch (IOException e) { e.printStackTrace(); } } } }
From source file:index.IndexUtils.java
public static void deleteIndex(String indexFile, String id) throws CorruptIndexException, IOException { IndexReader indexReader = IndexReader.open(indexFile); indexReader.deleteDocuments(new Term("id", id)); indexReader.close(); }