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

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

Introduction

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

Prototype

public Document doc(int docID) throws IOException 

Source Link

Document

Sugar for .getIndexReader().document(docID)

Usage

From source file:de.hybris.platform.lucenesearch.jalo.LuceneTest.java

License:Open Source License

public void assertHits(final Collection documents, final TopDocs hits, final IndexSearcher searcher)
        throws IOException {
    final StringBuilder message = new StringBuilder();
    message.append("expected <");
    for (final Iterator iter = documents.iterator(); iter.hasNext();) {
        final Document nextDocument = (Document) iter.next();
        message.append(nextDocument.get("key"));
        if (iter.hasNext()) {
            message.append(", ");
        }/*from   w  w w .j a va  2  s .  c  o m*/
    }
    message.append("> but found <");

    for (int i = 0; i < hits.totalHits; i++) {
        if (i != 0) {
            message.append(", ");
        }
        message.append(searcher.doc(i).get("key"));
    }
    message.append(">");
    final String messageString = message.toString();
    assertEquals(messageString, documents.size(), hits.totalHits);
    final Set documentKeys = new HashSet();
    for (final Iterator iter = documents.iterator(); iter.hasNext();) {
        final Document nextDocument = (Document) iter.next();
        documentKeys.add(nextDocument.get("key"));
    }
    for (int i = 0; i < hits.totalHits; i++) {
        final int docId = hits.scoreDocs[i].doc;
        assertTrue(messageString, documentKeys.contains(searcher.doc(docId).get("key")));
        if (documents instanceof List) {
            final Document expected = (Document) ((List) documents).get(i);
            assertEquals(messageString, expected.get("key"), searcher.doc(i).get("key"));
        }
    }
}

From source file:de.innovationgate.wgpublisher.lucene.LuceneManager.java

License:Open Source License

public org.apache.lucene.document.Document getDocument(int i)
        throws CorruptIndexException, IOException, InterruptedException {
    IndexSearcher searcher = getIndexSearcher();
    _indexSearcherSemaphore.acquire();//from   ww  w .j a v  a2  s.  com
    try {
        return searcher.doc(i);
    } finally {
        _indexSearcherSemaphore.release();
    }
}

From source file:de.jetsli.lumeo.RawLuceneTest.java

License:Apache License

@Test
public void testUpdateDoc() {
    RawLucene rl = g.getRaw();//from   www .j  a v  a 2  s.com
    long id = 1;
    Document doc = rl.createDocument("myId", id, Tmp.class);
    doc.add(m.createField("name", "peter"));
    rl.put("myId", id, doc);
    refresh();
    doc = rl.searchSomething(new SearchExecutor<Document>() {

        @Override
        public Document execute(IndexSearcher o) throws Exception {
            TopDocs td = o.search(new MatchAllDocsQuery(), 10);
            if (td.scoreDocs.length == 0)
                throw new IllegalStateException("no doc found");
            if (td.scoreDocs.length > 1)
                throw new IllegalStateException("too many docs found");

            return o.doc(td.scoreDocs[0].doc);
        }
    });
    assertEquals("peter", doc.get("name"));

    doc = rl.createDocument("myId", id, Tmp.class);
    doc.add(m.createField("name", "different"));
    rl.put("myId", id, doc);
    refresh();
    doc = rl.searchSomething(new SearchExecutor<Document>() {

        @Override
        public Document execute(IndexSearcher o) throws Exception {
            TopDocs td = o.search(new MatchAllDocsQuery(), 10);
            if (td.scoreDocs.length == 0)
                throw new IllegalStateException("no doc found");
            if (td.scoreDocs.length > 1)
                throw new IllegalStateException("too many docs found");

            return o.doc(td.scoreDocs[0].doc);
        }
    });
    assertEquals("different", doc.get("name"));
}

From source file:de.jetsli.lumeo.ReadESIndexViaLucene.java

License:Apache License

public static void main(String[] args) throws Exception {
    Logger logger = LoggerFactory.getLogger(ReadESIndexViaLucene.class);
    IndexWriterConfig cfg = new IndexWriterConfig(Version.LUCENE_40, new StandardAnalyzer(Version.LUCENE_40));
    IndexWriter writer = new IndexWriter(
            FSDirectory.open(new File("../elasticsearch/data/jetwickcluster/nodes/0/indices/twindex/0/index")),
            cfg);//from   www  .ja va 2s .  co m
    TrackingIndexWriter trackingWriter = new TrackingIndexWriter(writer);

    NRTManager nrtManager = new NRTManager(trackingWriter, new SearcherFactory() {
        // TODO warm up by getting some random vertices via getVertices?
    });
    IndexSearcher searcher = nrtManager.acquire();
    try {
        TopDocs td = searcher.search(new MatchAllDocsQuery(), 10);
        logger.info("results:" + td.totalHits);
        Document doc = searcher.doc(td.scoreDocs[0].doc);
        for (IndexableField f : doc.getFields()) {
            logger.info(f.name() + " " + f.stringValue());
        }
        logger.info(doc.get("tweet/tw"));
    } finally {
        nrtManager.release(searcher);
    }
}

From source file:de.jetsli.lumeo.util.LuceneHelperTest.java

License:Apache License

@Test
public void testTermMatching() throws Exception {
    RAMDirectory dir = new RAMDirectory();
    IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(RawLucene.VERSION, new KeywordAnalyzer()));
    Document d = new Document();

    FieldType ft = Mapping.getLongFieldType(true, true);
    d.add(new LongField("id", 1234, ft));
    d.add(new LongField("tmp", 1111, ft));
    w.addDocument(d);/*w  w  w .j  ava  2s .c o  m*/

    d = new Document();
    d.add(new LongField("id", 1234, ft));
    d.add(new LongField("tmp", 2222, ft));
    w.updateDocument(getTerm("id", 1234), d);

    d = new Document();
    d.add(new LongField("id", 0, ft));
    w.addDocument(d);
    w.commit();

    IndexReader reader = DirectoryReader.open(w, true);
    IndexSearcher searcher = new IndexSearcher(reader);

    BytesRef bytes = new BytesRef();
    NumericUtils.longToPrefixCoded(1234, 0, bytes);
    TopDocs td = searcher.search(new TermQuery(new Term("id", bytes)), 10);
    assertEquals(1, td.totalHits);
    assertEquals(1234L, searcher.doc(td.scoreDocs[0].doc).getField("id").numericValue());
    assertEquals(2222L, searcher.doc(td.scoreDocs[0].doc).getField("tmp").numericValue());
    w.close();
}

From source file:de.jetsli.lumeo.util.LuceneHelperTest.java

License:Apache License

@Test
public void testTermMatchingNrt() throws Exception {
    RAMDirectory dir = new RAMDirectory();
    IndexWriterConfig cfg = new IndexWriterConfig(Version.LUCENE_40, new KeywordAnalyzer());
    IndexWriter unwrappedWriter = new IndexWriter(dir, cfg);
    TrackingIndexWriter w = new TrackingIndexWriter(unwrappedWriter);

    NRTManager nrtManager = new NRTManager(w, new SearcherFactory() {

        //            @Override public void warm(IndexSearcher s) throws IOException {
        //                // TODO do some warming
        //            }
    });/*from  w w  w .j a va2s  . c o  m*/

    LumeoPerFieldAnalyzer analyzer = new LumeoPerFieldAnalyzer(Mapping.KEYWORD_ANALYZER);
    //        analyzer.putAnalyzer("id", Mapping.KEYWORD_ANALYZER);
    //        analyzer.putAnalyzer("tmp", Mapping.KEYWORD_ANALYZER);

    // It is required to use a reopen thread otherwise waitForGeneration will block forever!        
    // If there are waiting searchers how long should reopen takes?
    double incomingSearchesMaximumWaiting = 0.03;
    // If there are no waiting searchers reopen it less frequent.        
    double ordinaryWaiting = 5.0;
    //        NRTManagerReopenThread reopenThread = new NRTManagerReopenThread(nrtManager, ordinaryWaiting,
    //                incomingSearchesMaximumWaiting);
    //        reopenThread.setName("NRT Reopen Thread");
    //        reopenThread.setDaemon(true);
    //        reopenThread.start();

    FieldType ft = Mapping.getLongFieldType(true, true);
    Document d = new Document();
    d.add(new LongField("id", 1234, ft));
    d.add(new LongField("tmp", 1111, ft));
    long latestGen = w.updateDocument(getTerm("id", 1234), d, analyzer);

    d = new Document();
    d.add(new LongField("id", 1234, ft));
    d.add(new LongField("tmp", 2222, ft));
    latestGen = w.updateDocument(getTerm("id", 1234), d, analyzer);

    d = new Document();
    d.add(new LongField("id", 0, ft));
    latestGen = w.updateDocument(getTerm("id", 0), d, analyzer);

    w.getIndexWriter().commit();
    nrtManager.maybeRefreshBlocking();
    //        nrtManager.waitForGeneration(latestGen, true);

    IndexSearcher searcher = nrtManager.acquire();
    try {
        TopDocs td = searcher.search(new TermQuery(getTerm("id", 1234)), 10);
        assertEquals(1, td.totalHits);
        assertEquals(1, td.scoreDocs.length);
        assertEquals(1234L, searcher.doc(td.scoreDocs[0].doc).getField("id").numericValue());
        assertEquals(2222L, searcher.doc(td.scoreDocs[0].doc).getField("tmp").numericValue());

        td = searcher.search(new TermQuery(getTerm("id", 0)), 10);
        assertEquals(1, td.totalHits);
    } finally {
        //            reopenThread.close();
        nrtManager.release(searcher);
        w.getIndexWriter().close();
    }
}

From source file:de.ks.lucene.LuceneTaggingTest.java

License:Apache License

public void log(String queryType, IndexSearcher searcher, TopDocs search) throws IOException {
    log.info("{}: Found total={}, maxScore={}", queryType, search.totalHits, search.getMaxScore());
    for (ScoreDoc scoreDoc : search.scoreDocs) {
        Document doc = searcher.doc(scoreDoc.doc);
        String tags = doc.get("tags");
        log.info("Doc {}, score={}, tags={}", scoreDoc.doc, scoreDoc.score, tags);
    }/*w  w w  .  j  a va 2 s  .  c om*/
}

From source file:de.maklerpoint.office.Lucene.SearchLucene.java

License:Open Source License

public static void searchTest(String querytxt) throws IOException, ParseException {
    FSDirectory dir = FSDirectory.open(new File(indexDir));
    IndexSearcher isearcher = new IndexSearcher(dir);
    Analyzer anal = new StandardAnalyzer(Version.LUCENE_32);
    QueryParser parser = new QueryParser(Version.LUCENE_32, "contents", anal);
    Query query = parser.parse(querytxt);
    TopDocs hits = isearcher.search(query, 100);

    ScoreDoc[] scoreDocs = hits.scoreDocs;

    for (int n = 0; n < scoreDocs.length; ++n) {
        ScoreDoc sd = scoreDocs[n];//from  w w w  . ja v a2 s .  c  o m
        float score = sd.score;
        int docId = sd.doc;
        Document d = isearcher.doc(docId);
        String fileName = d.get("path");
        System.out.println("File: " + fileName);
        System.out.println("Score: " + score);
        //             System.out.println("Content: " + d.get("contents"));             
        System.out.println("Filetype: " + d.get("type"));
    }

    isearcher.close();
}

From source file:de.minecrawler.search.AbstractSearchEngine.java

License:Open Source License

/**
 * Starts a search on the parsed documents using a search query.
 * //from   ww  w.  j av  a 2s .  c o  m
 * @param queryString
 *            The query string <a href=
 *            "http://lucene.apache.org/core/4_1_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html"
 *            >Query Format</a>
 * @param limit
 *            The maximum numer of results
 * @return List of results
 */
public List<CrawledWebsiteResult> search(String queryString, int limit) {
    try {
        DirectoryReader ireader = DirectoryReader.open(this.dir);
        IndexSearcher isearcher = new IndexSearcher(ireader);

        QueryParser parser = new MultiFieldQueryParser(LUCENE_VERSION, FIELDS, ANALYZER);
        Query query = parser.parse(queryString);
        ScoreDoc[] hits = isearcher.search(query, null, limit).scoreDocs;

        List<CrawledWebsiteResult> result = new ArrayList<CrawledWebsiteResult>();
        for (int i = 0; i < hits.length; ++i) {
            Document hitDoc = isearcher.doc(hits[i].doc);
            CrawledWebsite website = extractWebsite(hitDoc);
            result.add(new CrawledWebsiteResult(website, i + 1, hits[i].score));
        }

        ireader.close();
        return result;
    } catch (IOException e) {
        e.printStackTrace();
        return Collections.<CrawledWebsiteResult>emptyList();
    } catch (ParseException e) {
        System.out.println("Wrong query! Check your query format!");
        System.out.println(e.getMessage());
        return Collections.<CrawledWebsiteResult>emptyList();
    }
}

From source file:de.mirkosertic.desktopsearch.LuceneIndexHandler.java

License:Open Source License

public UpdateCheckResult checkIfModified(String aFilename, long aLastModified) throws IOException {

    IndexSearcher theSearcher = searcherManager.acquire();
    try {//from  www  .j ava  2 s . co  m
        Query theQuery = new TermQuery(new Term(IndexFields.FILENAME, aFilename));
        TopDocs theDocs = theSearcher.search(theQuery, null, 100);
        if (theDocs.scoreDocs.length == 0) {
            return UpdateCheckResult.UPDATED;
        }
        if (theDocs.scoreDocs.length > 1) {
            // Multiple documents in index, we need to clean up
            return UpdateCheckResult.UPDATED;
        }
        ScoreDoc theFirstScore = theDocs.scoreDocs[0];
        Document theDocument = theSearcher.doc(theFirstScore.doc);

        long theStoredLastModified = theDocument.getField(IndexFields.LASTMODIFIED).numericValue().longValue();
        if (theStoredLastModified != aLastModified) {
            return UpdateCheckResult.UPDATED;
        }
        return UpdateCheckResult.UNMODIFIED;
    } finally {
        searcherManager.release(theSearcher);
    }
}