Example usage for org.apache.lucene.search IndexSearcher IndexSearcher

List of usage examples for org.apache.lucene.search IndexSearcher IndexSearcher

Introduction

In this page you can find the example usage for org.apache.lucene.search IndexSearcher IndexSearcher.

Prototype

public IndexSearcher(IndexReaderContext context) 

Source Link

Document

Creates a searcher searching the provided top-level IndexReaderContext .

Usage

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);/*from w ww.j  a  va 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);
    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.SearcherDAO.java

License:Open Source License

private IndexSearcher getSearcher() throws IOException {
    IndexReader reader = IndexReader.open(FSDirectory.open(this._indexDir), true);
    IndexSearcher searcher = new IndexSearcher(reader);
    return searcher;
}

From source file:com.aliasi.lingmed.entrezgene.CitationCompiler.java

License:Lingpipe license

private CitationCompiler(String[] args) throws Exception {
    super(args, DEFAULT_PARAMS);
    mMedlineService = getExistingArgument(MEDLINE_SERVICE);
    mEntrezService = getExistingArgument(ENTREZGENE_SERVICE);
    mCitationDirPath = getExistingArgument(CITATION_DIR);
    mCitationIndexName = getArgument(CITATION_INDEX);
    mMaxGeneHits = getArgumentInt(MAX_GENE_HITS);

    reportParameters();/*w w  w . j a  va  2 s .  c o m*/

    FileUtils.checkIndex(mMedlineService, false);
    mMedlineIndexSearcher = new IndexSearcher(mMedlineService);

    FileUtils.checkIndex(mEntrezService, false);
    Searcher egLocalSearcher = new IndexSearcher(mEntrezService);
    mEntrezGeneSearcher = new EntrezGeneSearcherImpl(new EntrezGeneCodec(), egLocalSearcher);
    mLogger.info("instantiated lucene searchers");

    mCitationDir = new File(mCitationDirPath);
    FileUtils.ensureDirExists(mCitationDir);

    if (mCitationIndexName != null) {
        mkIndex = true;
        mCitationIndex = new File(mCitationIndexName);
        FileUtils.ensureDirExists(mCitationIndex);
        mIndexWriter = new IndexWriter(FSDirectory.getDirectory(mCitationIndex), mCodec.getAnalyzer(),
                new IndexWriter.MaxFieldLength(IndexWriter.DEFAULT_MAX_FIELD_LENGTH));
        mIndexWriter.setRAMBufferSizeMB(RAM_BUF_SIZE);
        mIndexWriter.setMergeFactor(MERGE_FACTOR_HI);
        mLogger.info("opened writer for curated lucene index");
    }
}

From source file:com.aliasi.lingmed.genelinkage.ClusterArticles.java

License:Lingpipe license

private void processParameters() throws Exception {
    mGeneIdFile = FileUtils.checkInputFile(mGeneIdFilePath);

    if (mSearchHost.equals("localhost")) {
        FileUtils.checkIndex(mMedlineService, false);
        Searcher medlineLocalSearcher = new IndexSearcher(mMedlineService);
        mMedlineSearcher = new MedlineSearcherImpl(new MedlineCodec(), medlineLocalSearcher);

        FileUtils.checkIndex(mEntrezService, false);
        Searcher egLocalSearcher = new IndexSearcher(mEntrezService);
        mEntrezGeneSearcher = new EntrezGeneSearcherImpl(new EntrezGeneCodec(), egLocalSearcher);

    } else {//from   ww w.  jav  a2  s.  c  om
        SearchClient medlineClient = new SearchClient(mMedlineService, mSearchHost, 1099);
        Searcher medlineRemoteSearcher = medlineClient.getSearcher();
        mMedlineSearcher = new MedlineSearcherImpl(new MedlineCodec(), medlineRemoteSearcher);

        SearchClient egClient = new SearchClient(mEntrezService, mSearchHost, 1099);
        Searcher egRemoteSearcher = egClient.getSearcher();
        mEntrezGeneSearcher = new EntrezGeneSearcherImpl(new EntrezGeneCodec(), egRemoteSearcher);
    }
    mLogger.info("instantiated lucene searchers");

    InitialContext ic = new InitialContext();
    // Construct Jndi object reference:  arg1:  classname, arg2: factory name, arg3:URL (can be null)
    Reference ref = new Reference("com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource",
            "com.mysql.jdbc.jdbc2.optional.MysqlDataSourceFactory", null);
    ref.add(new StringRefAddr("driverClassName", "com.mysql.jdbc.Driver"));
    ref.add(new StringRefAddr("url", mDbUrl));
    ref.add(new StringRefAddr("databaseName", mDbName));
    ref.add(new StringRefAddr("username", mDbUserName));
    ref.add(new StringRefAddr("password", mDbUserPassword));
    ic.rebind("jdbc/mysql", ref);
    mGeneLinkageDao = GeneLinkageDaoImpl.getInstance(ic, "jdbc/mysql", mDbUserName, mDbUserPassword);
    mLogger.info("instantiated mysql dao");
    mLogger.info("mGeneLinkageDao: " + mGeneLinkageDao);

    mGeneLinkageSearcher = new GeneLinkageSearcher(mEntrezGeneSearcher, mMedlineSearcher, mGeneLinkageDao);

    mHtmlDir = new File(mHtmlDirPath);
    FileUtils.ensureDirExists(mHtmlDir);

    if (mMaxArticles < 1) {
        String msg = "Max Articles must be > 0, value found: " + mMaxArticles;
        throw new IllegalArgumentException(msg);
    }
}

From source file:com.aliasi.lingmed.lingblast.DictionaryBuilder.java

License:Lingpipe license

private DictionaryBuilder(String[] args) throws Exception {
    super(args, DEFAULT_PARAMS);
    Appender appender = new ConsoleAppender(new SimpleLayout());
    mLogger.addAppender(appender);//from w  w  w. j  av a2s. c  o  m

    mGenHtml = Boolean.valueOf(getArgument(GEN_HTML));
    mDictFileName = getExistingArgument(DICT_FILE);
    mSearchHost = getExistingArgument(SEARCH_HOST);
    mEntrezService = getExistingArgument(ENTREZ_SERVICE);
    mMedlineService = getExistingArgument(MEDLINE_SERVICE);
    mAllowedNamesFileName = getArgument(ALLOWED_NAMES_FILE);
    mMinNameLen = getArgumentInt(MIN_NAME_LENGTH);
    mMaxNameLen = getArgumentInt(MAX_NAME_LENGTH);
    mMaxPubmedHits = getArgumentInt(MAX_PUBMED_HITS);
    reportParameters();

    mDictFile = FileUtils.checkOutputFile(mDictFileName);

    if (mSearchHost.equals("localhost")) {
        FileUtils.checkIndex(mEntrezService, false);
        Searcher egLocalSearcher = new IndexSearcher(mEntrezService);
        mEntrezGeneSearcher = new EntrezGeneSearcherImpl(new EntrezGeneCodec(), egLocalSearcher);

        FileUtils.checkIndex(mMedlineService, false);
        Searcher medlineLocalSearcher = new IndexSearcher(mMedlineService);
        mMedlineSearcher = new MedlineSearcherImpl(new MedlineCodec(), medlineLocalSearcher);
    } else {
        SearchClient egClient = new SearchClient(mEntrezService, mSearchHost, 1099);
        Searcher egRemoteSearcher = egClient.getSearcher();
        mEntrezGeneSearcher = new EntrezGeneSearcherImpl(new EntrezGeneCodec(), egRemoteSearcher);

        SearchClient medlineClient = new SearchClient(mMedlineService, mSearchHost, 1099);
        Searcher medlineRemoteSearcher = medlineClient.getSearcher();
        mMedlineSearcher = new MedlineSearcherImpl(new MedlineCodec(), medlineRemoteSearcher);
    }
    if (mGenHtml) {
        openHtml();
    }
    if (mAllowedNamesFileName != null) {
        getAllowedNames(mAllowedNamesFileName);
    }
}

From source file:com.aliasi.lingmed.lingblast.LingBlastMedline.java

License:Lingpipe license

private LingBlastMedline(String[] args) throws Exception {
    super(args, DEFAULT_PARAMS);
    mMedlineService = getExistingArgument(MEDLINE_SERVICE);
    mSearchHost = getExistingArgument(SEARCH_HOST);
    mModelDirPath = getExistingArgument(MODEL_DIR);
    mSqlDirPath = getExistingArgument(SQL_DIR);
    mDictFilePath = getExistingArgument(DICTIONARY);
    mGenomicsThreshold = getArgumentDouble(GENOMICS_THRESHOLD);

    reportParameters();//from  ww  w  .j  av  a 2 s .  c o m

    mDictFile = FileUtils.checkInputFile(mDictFilePath);
    mModelDir = FileUtils.checkDir(mModelDirPath);

    mSqlDir = new File(mSqlDirPath);
    FileUtils.ensureDirExists(mSqlDir);

    if (mSearchHost.equals("localhost")) {
        FileUtils.checkIndex(mMedlineService, false);
        Searcher medlineLocalSearcher = new IndexSearcher(mMedlineService);
        mMedlineSearcher = new MedlineSearcherImpl(new MedlineCodec(), medlineLocalSearcher);
    } else {
        SearchClient medlineClient = new SearchClient(mMedlineService, mSearchHost, 1099);
        Searcher medlineRemoteSearcher = medlineClient.getSearcher();
        mMedlineSearcher = new MedlineSearcherImpl(new MedlineCodec(), medlineRemoteSearcher);
    }
    mLogger.info("instantiated medline searcher");
}

From source file:com.aliasi.lingmed.lingblast.ModelCompiler.java

License:Lingpipe license

private ModelCompiler(String[] args) throws Exception {
    super(args, DEFAULT_PARAMS);
    Appender appender = new ConsoleAppender(new SimpleLayout());
    mLogger.addAppender(appender);/* w  w  w.ja  v a2s  .c o  m*/

    mSearchHost = getExistingArgument(SEARCH_HOST);
    mMedlineService = getExistingArgument(MEDLINE_SERVICE);
    mEntrezService = getExistingArgument(ENTREZGENE_SERVICE);
    mGenHtml = Boolean.valueOf(getArgument(GEN_HTML));
    mModelDirPath = getExistingArgument(MODEL_DIR);
    mNGram = getArgumentInt(MAX_NGRAM);
    mMaxGeneHits = getArgumentInt(MAX_GENE_HITS);

    reportParameters();

    mModelDir = new File(mModelDirPath);
    FileUtils.ensureDirExists(mModelDir);

    if (mGenHtml) {
        mHtmlOut = new PrintStream(new FileOutputStream(new File(mModelDir, "Models.html")));
        mHtmlOut.println("<HTML><BODY>");
    }

    if (mSearchHost.equals("localhost")) {
        FileUtils.checkIndex(mMedlineService, false);
        Searcher medlineLocalSearcher = new IndexSearcher(mMedlineService);
        mMedlineSearcher = new MedlineSearcherImpl(new MedlineCodec(), medlineLocalSearcher);

        FileUtils.checkIndex(mEntrezService, false);
        Searcher egLocalSearcher = new IndexSearcher(mEntrezService);
        mEntrezGeneSearcher = new EntrezGeneSearcherImpl(new EntrezGeneCodec(), egLocalSearcher);

    } else {
        SearchClient medlineClient = new SearchClient(mMedlineService, mSearchHost, 1099);
        Searcher medlineRemoteSearcher = medlineClient.getSearcher();
        mMedlineSearcher = new MedlineSearcherImpl(new MedlineCodec(), medlineRemoteSearcher);

        SearchClient egClient = new SearchClient(mEntrezService, mSearchHost, 1099);
        Searcher egRemoteSearcher = egClient.getSearcher();
        mEntrezGeneSearcher = new EntrezGeneSearcherImpl(new EntrezGeneCodec(), egRemoteSearcher);

    }
    mLogger.info("instantiated lucene searchers");
}

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;//from w  ww  .  j a  v a  2  s.  c o m
    IndexSearcher searcher = null;
    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();
    }
}

From source file:com.aliasi.lingmed.server.SearchService.java

License:Lingpipe license

private SearchService(String[] args) throws IOException, RemoteException {
    super(args, DEFAULT_PARAMS);
    mIndexName = getExistingArgument(LUCENE_INDEX);
    mService = getExistingArgument(SERVICE);
    mPort = getArgumentInt(PORT);/*from  w w  w .  ja v  a  2s . c o  m*/
    reportParameters();

    mServer = new SearchServer(mPort);
    mLogger.info("search server instantiated on port: " + mPort);

    mIndex = FileUtils.checkIndex(mIndexName, false);
    mVersion = IndexReader.getCurrentVersion(mIndex);
    IndexSearcher searcher = new IndexSearcher(FSDirectory.getDirectory(mIndex));
    mLogger.info("instantiated index searcher, version: " + mVersion);
    mServer.registerSearcher(mService, searcher);
    mLogger.info("registered service: " + mService + " version: " + mVersion);
}

From source file:com.aliasi.lingmed.server.SearchService.java

License:Lingpipe license

public void run() {
    try {/*from  w w  w .  ja  v  a2s . c  o m*/
        while (true) {
            mLogger.info("check index versions");
            if (IndexReader.isLocked(mIndexName)) {
                mLogger.info("index locked: " + mIndexName);
            } else if (mVersion != IndexReader.getCurrentVersion(mIndex)) {
                mLogger.info("found new version of index for service: " + mService);
                mVersion = IndexReader.getCurrentVersion(mIndex);
                IndexSearcher searcher = new IndexSearcher(FSDirectory.getDirectory(mIndex));
                mServer.registerSearcher(mService, searcher);
                mLogger.info("re-registered service: " + mService + " version: " + mVersion);
            } else {
                mLogger.info("index unchanged: " + mIndexName + " version: " + mVersion);
            }
            Thread.sleep(15 * MINUTE);
        }
    } catch (Exception e) {
        String msg = "Unexpected exception=" + e.getMessage();
        mLogger.warn(msg);
        try {
            mServer.unregisterSearcher(mService);
        } catch (RemoteException re) {
            mLogger.warn(re.getMessage());
        }
        IllegalStateException e2 = new IllegalStateException(msg);
        e2.setStackTrace(e.getStackTrace());
        throw e2;
    }
}