Example usage for org.apache.lucene.index IndexReader close

List of usage examples for org.apache.lucene.index IndexReader close

Introduction

In this page you can find the example usage for org.apache.lucene.index IndexReader close.

Prototype

@Override
public final synchronized void close() throws IOException 

Source Link

Document

Closes files associated with this index.

Usage

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();
}