List of usage examples for org.apache.lucene.index IndexReader close
@Override public final synchronized void close() throws IOException
From source file:com.github.wxiaoqi.search.lucene.LuceneDao.java
License:Open Source License
public TableResultResponse<IndexObject> page(Integer pageNumber, Integer pageSize, String keyword) { IndexReader indexReader = null; TableResultResponse<IndexObject> pageQuery = null; List<IndexObject> searchResults = new ArrayList<>(); try {/*w ww. j a va 2 s . com*/ indexReader = DirectoryReader.open(this.getDirectory()); IndexSearcher indexSearcher = new IndexSearcher(indexReader); Query query = QueryUtil.query(keyword, this.getAnalyzer(), "title", "descripton"); ScoreDoc lastScoreDoc = this.getLastScoreDoc(pageNumber, pageSize, query, indexSearcher); /*?documentsearchAfter */ TopDocs topDocs = indexSearcher.searchAfter(lastScoreDoc, query, pageSize); Highlighter highlighter = this.addStringHighlighter(query); log.info("??{}", keyword); log.info("{}", topDocs.totalHits); for (ScoreDoc scoreDoc : topDocs.scoreDocs) { int docID = scoreDoc.doc; float score = scoreDoc.score; Document document = indexSearcher.doc(docID); IndexObject indexObject = DocumentUtil.document2IndexObject(this.getAnalyzer(), highlighter, document, score); searchResults.add(indexObject); log.info("" + score); } Collections.sort(searchResults); pageQuery = new TableResultResponse<>(topDocs.totalHits, searchResults); } catch (Exception e) { e.printStackTrace(); } finally { try { indexReader.close(); } catch (IOException e) { e.printStackTrace(); } } return pageQuery; }
From source file:com.globalsight.ling.lucene.HighFreqTerms.java
License:Apache License
public static void main(String[] args) throws Exception { IndexReader reader = null; if (args.length == 1) { SimpleFSDirectory fsd = new SimpleFSDirectory(new File(args[0])); reader = DirectoryReader.open(fsd); } else {/*from ww w.j a v a 2 s . c o m*/ usage(); System.exit(1); } TermInfoQueue tiq = new TermInfoQueue(numTerms); //TODO: IS field right? String field = IndexDocument.TEXT; Terms terms = reader.getTermVector(0, field); //TermEnum terms = reader.terms(); TermsEnum termsEnum = terms.iterator(null); BytesRef next = null; while ((next = termsEnum.next()) != null) { tiq.insertWithOverflow(new TermInfo(new Term(field, termsEnum.term()), termsEnum.docFreq())); } while (tiq.size() != 0) { TermInfo termInfo = (TermInfo) tiq.pop(); System.out.println(termInfo.term + " " + termInfo.docFreq); } reader.close(); }
From source file:com.gmail.mosoft521.luceneDemo.SearchFiles.java
License:Apache License
/** * Simple command-line based search demo. *///from ww w.j a v a 2s.c om 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); } 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); // :Post-Release-Update-Version.LUCENE_XY: Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_48); BufferedReader in = null; if (queries != null) { in = new BufferedReader(new InputStreamReader(new FileInputStream(queries), StandardCharsets.UTF_8)); } else { in = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); } // :Post-Release-Update-Version.LUCENE_XY: QueryParser parser = new QueryParser(Version.LUCENE_48, 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.gnizr.core.search.SearchIndexManager.java
License:Mozilla Public License
/** * Finds the representative bookmark document for a ginve URL hash. * /*from w w w . jav a 2 s .co m*/ * @param urlHash * a URL MD5 Hash. * * @return a Lucene document of the representative bookmark */ public Document findLeadDocument(String urlHash) { IndexReader reader = null; TermDocs termDocs = null; Document leadDoc = null; try { boolean exists = IndexReader.indexExists(indexDirectory); if (exists == true) { reader = IndexReader.open(indexDirectory); Term key = new Term(DocumentCreator.FIELD_URL_MD5, urlHash); termDocs = reader.termDocs(key); boolean found = false; while (termDocs.next() && found == false) { int pos = termDocs.doc(); // use FieldSelector for more efficient loading of Fields. // load only what's needed to determine a leading document Document d = reader.document(pos, new FieldSelector() { private static final long serialVersionUID = 1426724242925499003L; public FieldSelectorResult accept(String field) { if (field.equals(DocumentCreator.FIELD_INDEX_TYPE)) { return FieldSelectorResult.LOAD_AND_BREAK; } else { return FieldSelectorResult.NO_LOAD; } } }); String[] values = d.getValues(DocumentCreator.FIELD_INDEX_TYPE); if (values != null) { List<String> vList = Arrays.asList(values); if (vList.contains(DocumentCreator.INDEX_TYPE_LEAD) == true) { leadDoc = reader.document(pos); found = true; } } } } } catch (Exception e) { logger.error("FindLeadDocument failed to find doc: " + urlHash + ", exception=" + e); } finally { try { if (termDocs != null) { termDocs.close(); } if (reader != null) { reader.close(); } } catch (Exception e) { logger.error("FindLeadDocument can't close reader or termDocs: " + e); } } return leadDoc; }
From source file:com.gnizr.core.search.SearchIndexManager.java
License:Mozilla Public License
/** * Finds a non-representative bookmark document for a given URL hash. * /* w w w. j av a 2 s. com*/ * @param urlHash * a URL MD5 Hash. * * @return a Lucene document of a non-representative bookmark */ public Document findNonLeadDocument(String urlHash) { IndexReader reader = null; TermDocs termDocs = null; Document leadDoc = null; try { boolean exists = IndexReader.indexExists(indexDirectory); if (exists == true) { reader = IndexReader.open(indexDirectory); Term key = new Term(DocumentCreator.FIELD_URL_MD5, urlHash); termDocs = reader.termDocs(key); boolean found = false; while (termDocs.next() && found == false) { int pos = termDocs.doc(); // use FieldSelector for more efficient loading of Fields. // load only what's needed to determine a leading document Document d = reader.document(pos, new FieldSelector() { private static final long serialVersionUID = 1426724242925499003L; public FieldSelectorResult accept(String field) { if (field.equals(DocumentCreator.FIELD_INDEX_TYPE)) { return FieldSelectorResult.LOAD_AND_BREAK; } else { return FieldSelectorResult.NO_LOAD; } } }); String[] values = d.getValues(DocumentCreator.FIELD_INDEX_TYPE); if (values != null) { List<String> vList = Arrays.asList(values); if (vList.contains(DocumentCreator.INDEX_TYPE_LEAD) == false) { leadDoc = reader.document(pos); found = true; } } else { leadDoc = reader.document(pos); found = true; } } } } catch (Exception e) { logger.error("FindLeadDocument failed to find doc hash: " + urlHash + ", exception=" + e); } finally { try { if (termDocs != null) { termDocs.close(); } if (reader != null) { reader.close(); } } catch (Exception e) { logger.error("FindLeadDocument can't close reader or termDocs: " + e); } } return leadDoc; }
From source file:com.gnizr.web.action.search.SearchQuerySuggest.java
License:Mozilla Public License
@Override protected String go() throws Exception { logger.debug("Start SearchTermSuggestion. q = " + getQ() + " keywords size: " + keywords.size()); if (q != null && searchTermSuggestion != null) { TermQuery termQuery = null;/*ww w. j a v a 2 s . c o m*/ QueryParser parser = new QueryParser(DocumentCreator.FIELD_TEXT, DocumentCreator.createDocumentAnalyzer()); Query query = null; try { query = parser.parse(q); } catch (Exception e) { logger.debug("QueryParser error: " + e); } if (query == null) { return SUCCESS; } if ((query instanceof TermQuery) == false) { logger.debug("No search term suggestion. Non TermQuery is not curently support: " + q); return SUCCESS; } else { termQuery = (TermQuery) query; String fld = termQuery.getTerm().field(); if (fld.equals(DocumentCreator.FIELD_TEXT) == false && fld.equals(DocumentCreator.FIELD_TAG) == false) { logger.debug("No search term suggestion. Term field is neither 'tag' or 'text'. Field: " + fld); return SUCCESS; } } String[] results = new String[0]; IndexReader idxReader = null; try { idxReader = getIndexReader(); String field = termQuery.getTerm().field(); String value = termQuery.getTerm().text(); results = searchTermSuggestion.suggest(value, idxReader, field); if (results != null && results.length > 0) { if (field.equals(DocumentCreator.FIELD_TAG)) { keywords = formatToKeywords(results, DocumentCreator.FIELD_TAG); } else { keywords = formatToKeywords(results, null); } } } catch (Exception e) { logger.error(e); } finally { if (idxReader != null) { try { idxReader.close(); } catch (Exception e) { logger.error("Unable to close IndexReader for bookmark search index"); } } } } return SUCCESS; }
From source file:com.humi.lucene.test.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 . java 2 s. c om } 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); // :Post-Release-Update-Version.LUCENE_XY: Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_10_0); BufferedReader in = null; if (queries != null) { in = new BufferedReader(new InputStreamReader(new FileInputStream(queries), StandardCharsets.UTF_8)); } else { in = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); } // :Post-Release-Update-Version.LUCENE_XY: QueryParser parser = new QueryParser(Version.LUCENE_4_10_0, 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.icdd.lucence.SearchFiles.java
License:Apache License
public void searchFiles() { // /* ww w .j a v a 2 s. co m*/ String index = "F:/download/index/"; // String field = "contents"; // String queries = null; // String queryString = null; int repeat = 0; // ???? boolean raw = false; // ?10? int hitsPerPage = 10; try { 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 (queryString == null && queries == null) { 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; } try { 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); } catch (ParseException e) { e.printStackTrace(); } if (queryString != null) { break; } } reader.close(); } catch (IOException e) { e.printStackTrace(); } }
From source file:com.icdd.lucence.SearchFiles.java
License:Apache License
public List<Document> searchFilesWeb(String queryString) { // //w w w .j a v a2 s . com String index = "F:/download/index/"; // String field = "contents"; int repeat = 0; // ???? boolean raw = false; // ?10? int hitsPerPage = 10; List<Document> docs = new ArrayList<Document>(); try { IndexReader reader = DirectoryReader.open(FSDirectory.open(Paths.get(index))); IndexSearcher searcher = new IndexSearcher(reader); Analyzer analyzer = new StandardAnalyzer(); QueryParser parser = new QueryParser(field, analyzer); if (queryString == null) { System.out.println("Enter query:"); return null; } String line = queryString; line = line.trim(); if (line.length() == 0) { return null; } try { 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"); } docs = doPagingSearchWeb(docs, searcher, query, hitsPerPage, raw); } catch (ParseException e) { e.printStackTrace(); } reader.close(); } catch (IOException e) { e.printStackTrace(); } return docs; }
From source file:com.isa.basic.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 w w w .j a v a 2 s . c o m*/ } 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++) { TopDocs searchResults = 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(); }