List of usage examples for org.apache.lucene.search IndexSearcher doc
public Document doc(int docID) throws IOException
.getIndexReader().document(docID)
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); } }