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:cn.edu.thss.iise.beehivez.server.index.labelindex.LabelLuceneIndex.java

License:Open Source License

public boolean contain(String label) {
    try {/*from  ww w  . j  a  va  2  s. c o  m*/
        IndexReader reader = IndexReader.open(this.indexDir, true);
        Searcher searcher = new IndexSearcher(reader);
        // use the boolean query
        HashSet<String> queryTermSet = new HashSet<String>();
        TokenStream stream = analyzer.tokenStream(LabelDocument.FIELD_LABEL, new StringReader(label));
        TermAttribute termAtt = stream.addAttribute(TermAttribute.class);
        stream.reset();
        while (stream.incrementToken()) {
            queryTermSet.add(termAtt.term());
        }
        stream.end();
        stream.close();

        // construct the query
        BooleanQuery bq = new BooleanQuery();
        Iterator<String> it = queryTermSet.iterator();
        while (it.hasNext()) {
            String s = it.next();
            Term term = new Term(LabelDocument.FIELD_LABEL, s);
            TermQuery termQuery = new TermQuery(term);
            bq.add(termQuery, Occur.MUST);
        }

        ExactLabelQueryResultCollector collector = new ExactLabelQueryResultCollector(reader, label);
        searcher.search(bq, collector);
        boolean ret = collector.isExistQueryLabel();
        reader.close();
        return ret;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

From source file:cn.edu.thss.iise.beehivez.server.index.labelindex.LabelLuceneIndex.java

License:Open Source License

public TreeSet<SimilarLabelQueryResult> getSimilarLabels(String query, float similarity) {
    TreeSet<SimilarLabelQueryResult> ret = new TreeSet<SimilarLabelQueryResult>();
    if (query == null) {
        ret.add(new SimilarLabelQueryResult(null, 1));
        return ret;
    }//from   w ww  .  ja v  a  2s.com
    try {
        IndexReader reader = IndexReader.open(this.indexDir, true);
        Searcher searcher = new IndexSearcher(reader);

        // get terms from query
        HashSet<String> queryTermSet = new HashSet<String>();
        TokenStream stream = analyzer.tokenStream(LabelDocument.FIELD_LABEL, new StringReader(query));
        TermAttribute termAtt = stream.addAttribute(TermAttribute.class);
        stream.reset();
        while (stream.incrementToken()) {
            queryTermSet.add(termAtt.term());
        }
        stream.end();
        stream.close();

        // construct the query
        BooleanQuery bq = new BooleanQuery();
        Iterator<String> it = queryTermSet.iterator();
        SynonymMap synMap = SynonymIndex.getSynonymMap();
        HashSet<String> expandedQueryTermSet = new HashSet<String>(queryTermSet);

        while (it.hasNext()) {
            String s = it.next();
            Term term = new Term(LabelDocument.FIELD_LABEL, s);
            TermQuery termQuery = new TermQuery(term);
            bq.add(termQuery, Occur.SHOULD);
            // expand using synonyms
            for (String syn : synMap.getSynonyms(s)) {
                stemer.setCurrent(syn);
                stemer.stem();
                syn = stemer.getCurrent();
                if (expandedQueryTermSet.add(syn)) {
                    term = new Term(LabelDocument.FIELD_LABEL, syn);
                    termQuery = new TermQuery(term);
                    bq.add(termQuery, Occur.SHOULD);
                }
            }
        }

        // search in the label index
        SimilarLabelQueryResultCollector collector = new SimilarLabelQueryResultCollector(reader, queryTermSet,
                similarity);
        searcher.search(bq, collector);
        ret = collector.getQueryResult();
        searcher.close();
        reader.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return ret;
}

From source file:cn.edu.thss.iise.beehivez.server.index.petrinetindex.relationindex.TaskRelationIndex.java

License:Open Source License

@Override
public TreeSet<ProcessQueryResult> getProcessModels(Object o, float similarity) {
    TreeSet<ProcessQueryResult> ret = new TreeSet<ProcessQueryResult>();

    try {//from w  w  w  .  j  a  v a  2 s.  co m
        if (o instanceof String) {
            String query = (String) o;

            // analyze the query
            StringReader sr = new StringReader(query);
            BufferedReader br = new BufferedReader(sr);
            QueryParser parser = new QueryParser(br);
            if (GlobalParameter.isEnableSimilarLabel()) {
                parser.setSemanticAide(this.labelIndex, GlobalParameter.getLabelSemanticSimilarity());
            }
            Query q = parser.parse();
            // System.out.println("before optimization");
            // System.out.println(q.toString());
            br.close();
            sr.close();

            // optimize the query here
            // bq = parser.optimize(bq);
            // System.out.println("after optimization");
            // System.out.println(bq.toString());

            // query the lucene
            IndexReader reader = IndexReader.open(FSDirectory.open(INDEX_DIR), true);
            Searcher searcher = new IndexSearcher(reader);

            RelationQueryResultCollector collector = new RelationQueryResultCollector(reader);
            searcher.search(q, collector);
            ret = collector.getQueryResult();
            searcher.close();
            reader.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return ret;
}

From source file:cn.edu.thss.iise.beehivez.server.index.petrinetindex.tarluceneindex.TARLuceneIndex.java

License:Open Source License

@Override
public TreeSet<ProcessQueryResult> getProcessModels(Object o, float similarity) {

    TreeSet<ProcessQueryResult> ret = new TreeSet<ProcessQueryResult>();

    try {//from w w w . j av a 2s .co  m
        if (o instanceof PetriNet) {
            PetriNet pn = (PetriNet) o;

            IndexReader reader = IndexReader.open(FSDirectory.open(INDEX_DIR), true);
            Searcher searcher = new IndexSearcher(reader);
            BooleanQuery bq = new BooleanQuery();
            bq.setMaxClauseCount(Integer.MAX_VALUE);

            // make it sure that every queryterm is unique
            HashSet<String> expandedTars = new HashSet();

            // expand the query tars with their similar ones
            HashSet<HashSet<String>> exQueryTars = new HashSet<HashSet<String>>();

            // calculate the tars
            Iterator<TransitionLabelPair> itTAR = PetriNetUtil.getTARSFromPetriNetByCFP(pn).iterator();

            if (GlobalParameter.isEnableSimilarLabel()) {
                // label similarity is enabled
                while (itTAR.hasNext()) {
                    TransitionLabelPair tlp = itTAR.next();
                    String tarString = tlp.getFirst().trim() + PetriNetTARsDocument.TARCONNECTOR
                            + tlp.getSecond().trim();

                    HashSet<String> similarTars = new HashSet<String>();

                    TreeSet<SimilarLabelQueryResult> pres = labelIndex.getSimilarLabels(tlp.getFirst().trim(),
                            GlobalParameter.getLabelSemanticSimilarity());

                    TreeSet<SimilarLabelQueryResult> sucs = labelIndex.getSimilarLabels(tlp.getSecond().trim(),
                            GlobalParameter.getLabelSemanticSimilarity());

                    Iterator<SimilarLabelQueryResult> itPre = pres.iterator();
                    while (itPre.hasNext()) {
                        String pre = itPre.next().getLabel();
                        Iterator<SimilarLabelQueryResult> itSuc = sucs.iterator();
                        while (itSuc.hasNext()) {
                            String suc = itSuc.next().getLabel();
                            String tar = pre + PetriNetTARsDocument.TARCONNECTOR + suc;
                            if (similarTars.add(tar)) {
                                if (expandedTars.add(tar)) {
                                    Term term = new Term(PetriNetTARsDocument.FIELDTARS, tar);
                                    TermQuery termQuery = new TermQuery(term);
                                    bq.add(termQuery, Occur.SHOULD);
                                }
                            }
                        }
                    }

                    if (similarTars.size() == 0) {
                        similarTars.add(tarString);
                    }
                    exQueryTars.add(similarTars);
                }
            } else {
                // label similarity is not enabled
                while (itTAR.hasNext()) {
                    TransitionLabelPair tlp = itTAR.next();
                    String tarString = tlp.getFirst().trim() + PetriNetTARsDocument.TARCONNECTOR
                            + tlp.getSecond().trim();

                    HashSet<String> similarTars = new HashSet<String>();
                    similarTars.add(tarString);

                    if (expandedTars.add(tarString)) {
                        Term term = new Term(PetriNetTARsDocument.FIELDTARS, tarString);
                        TermQuery termQuery = new TermQuery(term);
                        bq.add(termQuery, Occur.SHOULD);
                    }
                    exQueryTars.add(similarTars);
                }
            }

            // while (itTAR.hasNext()) {
            // TransitionLabelPair tlp = itTAR.next();
            // String tarString = tlp.getFirst().trim()
            // + PetriNetTARsDocument.TARCONNECTOR
            // + tlp.getSecond().trim();
            //
            // HashSet<String> similarTars = new HashSet<String>();
            //
            // // expand with its similar tars
            // if (GlobalParameter.isEnableSimilarLabel()) {
            // TreeSet<SimilarLabelQueryResult> pres = labelIndex
            // .getSimilarLabels(tlp.getFirst().trim(),
            // GlobalParameter
            // .getLabelSemanticSimilarity());
            //
            // TreeSet<SimilarLabelQueryResult> sucs = labelIndex
            // .getSimilarLabels(tlp.getSecond().trim(),
            // GlobalParameter
            // .getLabelSemanticSimilarity());
            //
            // Iterator<SimilarLabelQueryResult> itPre = pres
            // .iterator();
            // while (itPre.hasNext()) {
            // String pre = itPre.next().getLabel();
            // Iterator<SimilarLabelQueryResult> itSuc = sucs
            // .iterator();
            // while (itSuc.hasNext()) {
            // String suc = itSuc.next().getLabel();
            // String tar = pre
            // + PetriNetTARsDocument.TARCONNECTOR
            // + suc;
            // if (similarTars.add(tar)) {
            // if (expandedTars.add(tar)) {
            // Term term = new Term(
            // PetriNetTARsDocument.FIELDTARS,
            // tar);
            // TermQuery termQuery = new TermQuery(
            // term);
            // bq.add(termQuery, Occur.SHOULD);
            // }
            // }
            // }
            // }
            //
            // if (similarTars.size() == 0) {
            // similarTars.add(tarString);
            // }
            //
            // } else {
            // similarTars.add(tarString);
            //
            // if (expandedTars.add(tarString)) {
            // Term term = new Term(
            // PetriNetTARsDocument.FIELDTARS, tarString);
            // TermQuery termQuery = new TermQuery(term);
            // bq.add(termQuery, Occur.SHOULD);
            // }
            // }
            //
            // exQueryTars.add(similarTars);
            // }

            TARsQueryResultCollector collector = new TARsQueryResultCollector(reader, exQueryTars, similarity);
            searcher.search(bq, collector);
            ret = collector.getQueryResult();
            searcher.close();
            reader.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return ret;
}

From source file:cn.edu.thss.iise.beehivez.server.index.petrinetindex.taskedgeindex.TaskEdgeLuceneIndex.java

License:Open Source License

@Override
public TreeSet<ProcessQueryResult> getProcessModels(Object o, float similarity) {

    TreeSet<ProcessQueryResult> ret = new TreeSet<ProcessQueryResult>();

    try {//from w  ww  .  ja  v a  2s. c  o m
        if (o instanceof PetriNet) {
            PetriNet pn = (PetriNet) o;

            IndexReader reader = IndexReader.open(FSDirectory.open(INDEX_DIR), true);
            Searcher searcher = new IndexSearcher(reader);
            BooleanQuery bq = new BooleanQuery();
            bq.setMaxClauseCount(Integer.MAX_VALUE);

            // make it sure that every queryterm is unique
            HashSet<String> expandedTaskEdges = new HashSet();

            // expand the query task edges with their similar ones
            HashSet<HashSet<String>> exQueryTaskEdges = new HashSet<HashSet<String>>();

            // calculate the task edges of query Petri net
            ArrayList<TaskLine4PetriNet> tls = TaskLine4PetriNet.getAllTaskLinesOfPetriNet(pn);

            if (GlobalParameter.isEnableSimilarLabel()) {
                // label similarity is enabled
                for (TaskLine4PetriNet tl : tls) {
                    String taskEdgeString = tl.getSrcTransition().getIdentifier().trim()
                            + PetriNetTaskEdgesDocument.TASKEDGECONNECTOR
                            + tl.getDestTransition().getIdentifier().trim();

                    HashSet<String> similarTaskEdges = new HashSet<String>();

                    TreeSet<SimilarLabelQueryResult> pres = labelIndex.getSimilarLabels(
                            tl.getSrcTransition().getIdentifier().trim(),
                            GlobalParameter.getLabelSemanticSimilarity());

                    TreeSet<SimilarLabelQueryResult> sucs = labelIndex.getSimilarLabels(
                            tl.getDestTransition().getIdentifier().trim(),
                            GlobalParameter.getLabelSemanticSimilarity());

                    Iterator<SimilarLabelQueryResult> itPre = pres.iterator();
                    while (itPre.hasNext()) {
                        String pre = itPre.next().getLabel();
                        Iterator<SimilarLabelQueryResult> itSuc = sucs.iterator();
                        while (itSuc.hasNext()) {
                            String suc = itSuc.next().getLabel();
                            String taskEdge = pre + PetriNetTaskEdgesDocument.TASKEDGECONNECTOR + suc;
                            if (similarTaskEdges.add(taskEdge)) {
                                if (expandedTaskEdges.add(taskEdge)) {
                                    Term term = new Term(PetriNetTaskEdgesDocument.FIELDTASKEDGES, taskEdge);
                                    TermQuery termQuery = new TermQuery(term);
                                    bq.add(termQuery, Occur.SHOULD);
                                }
                            }
                        }
                    }

                    if (similarTaskEdges.size() == 0) {
                        similarTaskEdges.add(taskEdgeString);
                    }
                    exQueryTaskEdges.add(similarTaskEdges);
                }
            } else {
                // label similarity is not enabled
                for (TaskLine4PetriNet tl : tls) {
                    String taskEdgeString = tl.getSrcTransition().getIdentifier().trim()
                            + PetriNetTaskEdgesDocument.TASKEDGECONNECTOR
                            + tl.getDestTransition().getIdentifier().trim();

                    HashSet<String> similarTaskEdges = new HashSet<String>();
                    similarTaskEdges.add(taskEdgeString);

                    if (expandedTaskEdges.add(taskEdgeString)) {
                        Term term = new Term(PetriNetTaskEdgesDocument.FIELDTASKEDGES, taskEdgeString);
                        TermQuery termQuery = new TermQuery(term);
                        bq.add(termQuery, Occur.SHOULD);
                    }
                    exQueryTaskEdges.add(similarTaskEdges);
                }
            }

            TaskEdgesQueryResultCollector collector = new TaskEdgesQueryResultCollector(reader,
                    exQueryTaskEdges, similarity);
            searcher.search(bq, collector);
            TreeSet<ProcessQueryResult> temp = collector.getQueryResult();
            searcher.close();
            reader.close();

            // verify the candidate model
            Iterator<ProcessQueryResult> it = temp.iterator();
            while (it.hasNext()) {
                ProcessQueryResult pqr = it.next();
                long id = pqr.getProcess_id();
                DataManager dm = DataManager.getInstance();
                PetriNet c = dm.getProcessPetriNet(id);
                float mcesSimilarity = PetriNetUtil.mcesSimilarity(c, pn);
                if (mcesSimilarity >= similarity) {
                    ret.add(new ProcessQueryResult(id, mcesSimilarity));
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return ret;
}

From source file:cn.edu.thss.iise.beehivez.server.index.yawlindex.yawltasksluceneindex.YAWLTasksLuceneIndex.java

License:Open Source License

@Override
public TreeSet<ProcessQueryResult> getProcessModels(Object o, float similarity) {
    TreeSet<ProcessQueryResult> ret = new TreeSet<ProcessQueryResult>();

    try {/*from w  ww  .  j  a  va2 s. co  m*/
        if (o instanceof YNet) {
            YNet query = (YNet) o;

            IndexReader reader = IndexReader.open(FSDirectory.open(INDEX_DIR), true);
            Searcher searcher = new IndexSearcher(reader);
            BooleanQuery bq = new BooleanQuery();
            BooleanQuery.setMaxClauseCount(Integer.MAX_VALUE);

            // expand the tasks with their similar ones
            HashSet<String> expandedTasks = new HashSet<String>();

            if (GlobalParameter.isEnableSimilarLabel()) {
                // label similarity is enabled
                for (YTask task : query.getNetTasks()) {
                    String taskName = task.getName().trim();
                    if (expandedTasks.add(taskName)) {
                        BooleanQuery subq = new BooleanQuery();
                        // Term term = new
                        // Term(YAWLTasksDocument.FIELDTASKS,
                        // taskName);
                        // TermQuery termQuery = new TermQuery(term);
                        // subq.add(termQuery, Occur.SHOULD);

                        TreeSet<SimilarLabelQueryResult> similarTasks = labelIndex.getSimilarLabels(taskName,
                                GlobalParameter.getLabelSemanticSimilarity());
                        Iterator<SimilarLabelQueryResult> it = similarTasks.iterator();
                        while (it.hasNext()) {
                            SimilarLabelQueryResult sl = it.next();
                            String similarTaskName = sl.getLabel();
                            Term term = new Term(YAWLTasksDocument.FIELDTASKS, similarTaskName);
                            TermQuery termQuery = new TermQuery(term);
                            subq.add(termQuery, Occur.SHOULD);
                        }
                        if (subq.getClauses().length > 0) {
                            bq.add(subq, Occur.MUST);
                        } else {
                            return ret;
                        }
                    }
                }
            } else {
                // label similarity is not enabled
                for (YTask task : query.getNetTasks()) {
                    String taskName = task.getName().trim();
                    if (expandedTasks.add(taskName)) {
                        Term term = new Term(YAWLTasksDocument.FIELDTASKS, taskName);
                        TermQuery termQuery = new TermQuery(term);
                        bq.add(termQuery, Occur.MUST);
                    }
                }
            }

            // for (YTask task : query.getNetTasks()) {
            // String taskName = task.getName().trim();
            // if (GlobalParameter.isEnableSimilarLabel()) {
            // // label similarity is enabled
            // if (expandedTasks.add(taskName)) {
            // BooleanQuery subq = new BooleanQuery();
            // // Term term = new
            // // Term(YAWLTasksDocument.FIELDTASKS,
            // // taskName);
            // // TermQuery termQuery = new TermQuery(term);
            // // subq.add(termQuery, Occur.SHOULD);
            //
            // TreeSet<SimilarLabelQueryResult> similarTasks = labelIndex
            // .getSimilarLabels(taskName, GlobalParameter
            // .getLabelSemanticSimilarity());
            // Iterator<SimilarLabelQueryResult> it = similarTasks
            // .iterator();
            // while (it.hasNext()) {
            // SimilarLabelQueryResult sl = it.next();
            // String similarTaskName = sl.getLabel();
            // Term term = new Term(
            // YAWLTasksDocument.FIELDTASKS,
            // similarTaskName);
            // TermQuery termQuery = new TermQuery(term);
            // subq.add(termQuery, Occur.SHOULD);
            // }
            // if (subq.getClauses().length > 0) {
            // bq.add(subq, Occur.MUST);
            // } else {
            // return ret;
            // }
            // }
            // } else {
            // // label similarity is not enabled
            // if (expandedTasks.add(taskName)) {
            // Term term = new Term(YAWLTasksDocument.FIELDTASKS,
            // taskName);
            // TermQuery termQuery = new TermQuery(term);
            // bq.add(termQuery, Occur.MUST);
            // }
            // }
            // }

            YAWLTasksQueryResultCollector collector = new YAWLTasksQueryResultCollector(reader);
            searcher.search(bq, collector);
            ret = collector.getQueryResult();
            searcher.close();
            reader.close();

            // sub graph isomorphism check using Ullman's algorithm
            // accurately match
            Iterator<ProcessQueryResult> it = ret.iterator();
            while (it.hasNext()) {
                ProcessQueryResult pqr = it.next();
                long process_id = pqr.getProcess_id();
                DataManager dm = DataManager.getInstance();
                YNet model = YAWLUtil.getYNetFromDefinition(dm.getProcessDefinitionBytes(process_id));
                if (!Ullman4YAWL.subGraphIsomorphism(query, model)) {
                    it.remove();
                }
                // if (!VF24YAWL.subGraphIsomorphism(query, model)) {
                // it.remove();
                // }
            }

        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return ret;
}

From source file:cn.fql.blogspider.SearchMain.java

License:Open Source License

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);/*  w ww. j a  v a2 s  .c  om*/
    }

    String index = "D:\\test\\index";
    String field = "contents";
    String queries = null;

    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);
    //Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_40);
    Analyzer analyzer = new IKAnalyzer();
    BufferedReader in = null;
    if (queries != null)
        in = new BufferedReader(new InputStreamReader(new FileInputStream(queries), "UTF-8"));
    else
        in = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));

    QueryParser parser = new QueryParser(Version.LUCENE_40, field, analyzer);
    while (true) {
        if ((queries == null) && (queryString == null)) {
            System.out.println("Enter query: ");
        }

        String line = (queryString != null) ? queryString : in.readLine();

        if (line == null)
            break;
        if (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));

        doPagingSearch(in, searcher, query, hitsPerPage, (queries == null) && (queryString == null));

        if (queryString != null)
            break;
    }

    reader.close();
}

From source file:com.admarketplace.isg.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 v  a 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(new File(index)));
    IndexSearcher searcher = new IndexSearcher(reader);
    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_40);

    BufferedReader in = null;
    if (queries != null) {
        in = new BufferedReader(new InputStreamReader(new FileInputStream(queries), "UTF-8"));
    } else {
        in = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
    }
    QueryParser parser = new QueryParser(Version.LUCENE_40, 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.agiletec.plugins.jacms.aps.system.services.searchengine.IndexerDAO.java

License:Open Source License

/**
 * Cancella un documento in base alla chiave (di nome "id") 
 * mediante il quale  stato indicizzato.
 * Nel caso della cancellazione di un contenuto il nome del campo 
 * da utilizzare sar "id" mentre il valore sar l'identificativo del contenuto.
 * @param name Il nome del campo Field da utilizzare per recupero del documento.
 * @param value La chiave mediante il quale 
 *  stato indicizzato il documento.//from  w w  w . j  a v a  2 s . co  m
 * @throws ApsSystemException
 */
@Override
public synchronized void delete(String name, String value) throws ApsSystemException {
    IndexReader reader = null;
    try {
        reader = IndexReader.open(this._dir, false);
        reader.deleteDocuments(new Term(name, value));
        reader.close();
        IndexWriter writer = new IndexWriter(this._dir, this.getAnalyzer(), false,
                new MaxFieldLength(IndexWriter.DEFAULT_MAX_FIELD_LENGTH));
        writer.optimize();
        writer.close();
    } catch (IOException e) {
        throw new ApsSystemException("Errore nella cancellazione di un indice", e);
    }
}

From source file:com.aliasi.lingmed.medline.IndexMedline.java

License:Lingpipe license

private String getLastUpdate(File index) throws IOException {
    System.out.println("Got index" + index);
    IndexReader reader = null;
    IndexSearcher searcher = null;//from   w ww . j a v a2  s.c  o  m
    try {
        if (isNewDirectory(mIndex))
            return LOW_SORT_STRING;
        Directory fsDir = FSDirectory.open(mIndex);
        reader = IndexReader.open(fsDir);
        searcher = new IndexSearcher(reader);

        Term term = new Term(Fields.MEDLINE_DIST_FIELD, Fields.MEDLINE_DIST_VALUE);
        SortField sortField = new SortField(Fields.MEDLINE_FILE_FIELD, SortField.STRING);
        Sort sort = new Sort(sortField);
        Query query = new TermQuery(term);
        TopFieldDocs results = searcher.search(query, null, 1, sort);
        if (results.totalHits == 0) {
            searcher.close();
            reader.close();
            return LOW_SORT_STRING;
        }
        //            if (mLogger.isDebugEnabled())
        //                mLogger.debug("num MEDLINE_FILE docs: " + results.totalHits);
        Document d = searcher.doc(results.scoreDocs[0].doc);
        return d.get(Fields.MEDLINE_FILE_FIELD);
    } finally {
        if (searcher != null)
            searcher.close();
        if (reader != null)
            reader.close();
    }
}