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.icdd.lucence.SearchFiles.java

License:Apache License

public List<Document> searchFilesWeb(String queryString) {
    // //from  w w  w  . j a  v  a2 s  .  co  m
    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.ideabase.dictionary.core.impl.LuceneIndexManager.java

License:Open Source License

private void initiateIndexReader() {
    mLogger.info("Initiating Index Reader");
    try {/*from   www  .  j a v  a2  s .  c  o m*/
        mIndexSearcher = new IndexSearcher(mIndexDirectory);
        if (mLogger.isDebugEnabled()) {
            mLogger.debug("Max doc - " + mIndexSearcher.maxDoc());
        }
    } catch (FileNotFoundException fne) {
        mLogger.warn("File not found");
    } catch (IOException e) {
        throw new RuntimeException("Failed to initiate index reader for " + mIndexDirectory, e);
    }
}

From source file:com.ikon.analysis.SearchDemo.java

License:Open Source License

/**
 * Search in documents/* w  w  w .j a  v a2  s  .c  o m*/
 */
private static void search(Directory index, Analyzer analyzer, String str)
        throws ParseException, CorruptIndexException, IOException {
    IndexReader reader = IndexReader.open(index);
    IndexSearcher searcher = new IndexSearcher(reader);
    TopScoreDocCollector collector = TopScoreDocCollector.create(NUM_HITS, true);
    //Query q = new QueryParser(Config.LUCENE_VERSION, DOC_FIELD, analyzer).parse(str);
    Query q = new WildcardQuery(new Term(DOC_FIELD, str));
    System.out.println("Query: " + q);

    searcher.search(q, collector);
    ScoreDoc[] hits = collector.topDocs().scoreDocs;

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

    searcher.close();
}

From source file:com.impetus.kundera.index.LucandraIndexer.java

License:Apache License

@SuppressWarnings("deprecation")
@Override/*ww  w . j  av a2s .  c  om*/
public final List<String> search(String luceneQuery, int start, int count) {

    if (Constants.INVALID == count) {
        count = 100;
    }

    log.debug("Searhcing index with query[" + luceneQuery + "], start:" + start + ", count:" + count);

    Set<String> entityIds = new HashSet<String>();

    org.apache.lucene.index.IndexReader indexReader = null;
    try {
        if (client.getType().equals(DBType.CASSANDRA)) {
            indexReader = new IndexReader(INDEX_NAME, ((CassandraClient) client).getCassandraClient());
        } else {
            indexReader = getDefaultReader();
        }
    } catch (Exception e) {
        throw new IndexingException(e.getMessage());
    }
    IndexSearcher searcher = new IndexSearcher(indexReader);

    QueryParser qp = new QueryParser(Version.LUCENE_CURRENT, DEFAULT_SEARCHABLE_FIELD, analyzer);
    try {
        Query q = qp.parse(luceneQuery);
        TopDocs docs = searcher.search(q, count);

        for (ScoreDoc sc : docs.scoreDocs) {
            Document doc = searcher.doc(sc.doc);
            entityIds.add(doc.get(ENTITY_ID_FIELD));
        }
    } catch (ParseException e) {
        new IndexingException(e.getMessage());
    } catch (IOException e) {
        new IndexingException(e.getMessage());
    }

    log.debug("Result[" + entityIds + "]");
    return new ArrayList<String>(entityIds);
}

From source file:com.impetus.kundera.index.LuceneIndexer.java

License:Apache License

@Override
public final Map<String, Object> search(String luceneQuery, int start, int count, boolean fetchRelation,
        KunderaMetadata kunderaMetadata, EntityMetadata metadata) {
    boolean isEmbeddedId = false;

    MetamodelImpl metaModel = null;/* w ww.  j  a va2 s .c  o m*/
    if (kunderaMetadata != null && metadata != null) {
        metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata()
                .getMetamodel(metadata.getPersistenceUnit());
        isEmbeddedId = metaModel.isEmbeddable(metadata.getIdAttribute().getBindableJavaType());
    }
    reader = getIndexReader();

    if (Constants.INVALID == count) {
        count = 100;
    }

    if (log.isDebugEnabled()) {
        log.debug("Searching index with query[{}], start:{} , count:" + count, luceneQuery, start);
    }

    // Set<String> entityIds = new HashSet<String>();
    Map<String, Object> indexCol = new HashMap<String, Object>();

    if (reader == null) {

        return indexCol;
        // throw new
        // LuceneIndexingException("Index reader is not initialized!");
    }
    QueryParser qp = null;
    IndexSearcher searcher = new IndexSearcher(reader);

    qp = new QueryParser(DEFAULT_SEARCHABLE_FIELD, new StandardAnalyzer());

    try {
        // to make like query case insensitive
        // qp.setLowercaseExpandedTerms(true);
        qp.setAllowLeadingWildcard(true);
        // qp.set
        Query q = qp.parse(luceneQuery);

        TopDocs docs = searcher.search(q, count);

        int nullCount = 0;

        // Assuming Supercol will be null in case if alias only.
        // This is a quick fix
        if (isEmbeddedId) {
            prepareEmbeddedId(docs, indexCol, searcher, metadata, metaModel);
        } else {
            for (ScoreDoc sc : docs.scoreDocs) {

                Document doc = searcher.doc(sc.doc);
                String entityId = doc.get(
                        fetchRelation ? IndexingConstants.PARENT_ID_FIELD : IndexingConstants.ENTITY_ID_FIELD);
                String superCol = doc.get(SUPERCOLUMN_INDEX);

                if (superCol == null) {
                    superCol = "SuperCol" + nullCount++;
                }
                // In case of super column and association.
                indexCol.put(superCol + "|" + entityId, entityId);
            }

        }
    } catch (Exception e) {
        log.error("Error while parsing Lucene Query {} ", luceneQuery, e);
        throw new LuceneIndexingException(e);
    }

    reader = null;
    return indexCol;
}

From source file:com.intuit.tank.search.lucene.LuceneService.java

License:Open Source License

/**
 * Gets a searcher for the search index location
 * //  w w w .  ja va 2  s . c om
 * @return
 */
private IndexSearcher getSearcher() {
    IndexSearcher searcher = null;
    try {
        IndexReader reader = getReader();
        if (!reader.isCurrent()) {
            reader.reopen();
        }
        searcher = new IndexSearcher(reader);
    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException();
    }
    return searcher;
}

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);/* ww  w  . j av  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();
}

From source file:com.it.lucene.test.IndexSearch.java

private void doSearch(Query query) {
    try {//w  ww  .j  a  v  a 2 s.  c om
        // 2?IndexSearcher
        // 2.1 IndexReader
        // 2.1Directory
        Directory directory = FSDirectory.open(new File("F:\\Lucene Index"));
        IndexReader reader = DirectoryReader.open(directory);
        IndexSearcher searcher = new IndexSearcher(reader);
        // 3?indexSearcher?
        // ?
        TopDocs topDocs = searcher.search(query, 10);

        // 4??
        // ???
        long count = topDocs.totalHits;

        System.out.println("???:" + count);

        ScoreDoc[] scoreDocs = topDocs.scoreDocs;

        for (ScoreDoc scoreDoc : scoreDocs) {
            int docId = scoreDoc.doc;
            Document doc = searcher.doc(docId);
            System.out.println("?ID" + doc.get("id"));
            System.out.println("???" + doc.get("name"));
            System.out.println("?" + doc.get("price"));
            System.out.println("?pic" + doc.get("pic"));
        }
        // 5?IndexReader
        reader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

From source file:com.ivannotes.searchbee.demo.TxtSearchBee.java

License:Apache License

@Override
protected IndexSearcher getIndexSearcher() {
    try {/*  ww  w  .j  av  a  2 s. c  om*/
        IndexReader reader;
        reader = IndexReader.open(FSDirectory.open(new File(idxPath)));
        IndexSearcher searcher = new IndexSearcher(reader);

        return searcher;
    } catch (Exception e) {
        throw new RuntimeException("Get index searcher error. ", e);
    }
}

From source file:com.jaeksoft.searchlib.index.ReaderLocal.java

License:Open Source License

ReaderLocal(IndexConfig indexConfig, IndexDirectory indexDirectory) throws IOException, SearchLibException {
    super(indexConfig);
    spellCheckCache = new SpellCheckCache(100);
    docSetHitsCache = new DocSetHitsCache(indexConfig);
    this.indexDirectory = indexDirectory;
    references = new AtomicInteger(0);
    acquire();/* w ww  .j  a v  a2s . co  m*/
    Directory directory = indexDirectory.getDirectory();
    if (directory == null)
        throw new IOException("The directory is closed");
    if (indexConfig.isMulti()) {
        List<String> indexList = indexConfig.getIndexList();
        indexDirectories = new IndexDirectory[indexList.size()];
        indexReaders = new IndexReader[indexList.size()];
        int i = 0;
        for (String indexName : indexList) {
            IndexDirectory indexDir = new IndexDirectory(
                    new File(ClientCatalog.getClient(indexName).getDirectory(), "index"));
            indexDirectories[i] = indexDir;
            indexReaders[i++] = IndexReader.open(indexDir.getDirectory());
        }
        indexReader = new MultiReader(indexReaders);
    } else {
        indexReaders = null;
        indexDirectories = null;
        indexReader = IndexReader.open(directory);
    }
    indexSearcher = new IndexSearcher(indexReader);

    Similarity similarity = indexConfig.getNewSimilarityInstance();
    if (similarity != null)
        indexSearcher.setSimilarity(similarity);
}