Java Code Examples for org.apache.solr.search.DocList#iterator()
The following examples show how to use
org.apache.solr.search.DocList#iterator() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TestXJoinSearchComponent.java From BioSolr with Apache License 2.0 | 6 votes |
@Test @SuppressWarnings("rawtypes") public void testGroupedSimple() { ModifiableSolrParams params = new ModifiableSolrParams(); params.add("group", "true"); params.add("group.field", "colour"); params.add("group.format", "simple"); NamedList results = test(params, "xjoin"); testXJoinResults(results, "xjoin"); NamedList grouped = (NamedList)results.get("grouped"); NamedList colours = (NamedList)grouped.get("colour"); assertEquals(2, colours.get("matches")); DocList docs = (DocList)colours.get("doclist"); assertEquals(docs.size(), 2); DocIterator it = docs.iterator(); assertTrue(it.hasNext()); assertEquals(1, it.nextDoc()); assertTrue(it.hasNext()); assertEquals(3, it.nextDoc()); assertFalse(it.hasNext()); }
Example 2
Source File: TestXJoinSearchComponent.java From BioSolr with Apache License 2.0 | 6 votes |
@Test @SuppressWarnings("rawtypes") public void testUngrouped() { ModifiableSolrParams params = new ModifiableSolrParams(); NamedList results = test(params, "xjoin"); testXJoinResults(results, "xjoin"); ResultContext response = (ResultContext)results.get("response"); DocList docs = response.docs; assertEquals(2, docs.size()); DocIterator it = docs.iterator(); assertTrue(it.hasNext()); assertEquals(1, it.nextDoc()); assertTrue(it.hasNext()); assertEquals(3, it.nextDoc()); assertFalse(it.hasNext()); }
Example 3
Source File: SolrPluginUtils.java From lucene-solr with Apache License 2.0 | 6 votes |
/** * Generates an NamedList of Explanations for each item in a list of docs. * * @param query The Query you want explanations in the context of * @param docs The Documents you want explained relative that query */ public static NamedList<Explanation> getExplanations (Query query, DocList docs, SolrIndexSearcher searcher, IndexSchema schema) throws IOException { NamedList<Explanation> explainList = new SimpleOrderedMap<>(); DocIterator iterator = docs.iterator(); for (int i=0; i<docs.size(); i++) { int id = iterator.nextDoc(); Document doc = searcher.doc(id); String strid = schema.printableUniqueKey(doc); explainList.add(strid, searcher.explain(query, id) ); } return explainList; }
Example 4
Source File: TestXJoinSearchComponent.java From BioSolr with Apache License 2.0 | 6 votes |
@Test @SuppressWarnings("rawtypes") public void testGroupedSimple() { ModifiableSolrParams params = new ModifiableSolrParams(); params.add("group", "true"); params.add("group.field", "colour"); params.add("group.format", "simple"); NamedList results = test(params, "xjoin"); testXJoinResults(results, "xjoin"); NamedList grouped = (NamedList)results.get("grouped"); NamedList colours = (NamedList)grouped.get("colour"); assertEquals(2, colours.get("matches")); DocList docs = (DocList)colours.get("doclist"); assertEquals(docs.size(), 2); DocIterator it = docs.iterator(); assertTrue(it.hasNext()); assertEquals(1, it.nextDoc()); assertTrue(it.hasNext()); assertEquals(3, it.nextDoc()); assertFalse(it.hasNext()); }
Example 5
Source File: LireRequestHandler.java From liresolr with GNU General Public License v2.0 | 6 votes |
/** * Returns a random set of documents from the index. Mainly for testing purposes. * * @param req * @param rsp * @throws IOException */ private void handleRandomSearch(SolrQueryRequest req, SolrQueryResponse rsp) throws IOException { SolrIndexSearcher searcher = req.getSearcher(); Query query = new MatchAllDocsQuery(); DocList docList = searcher.getDocList(query, getFilterQueries(req), Sort.RELEVANCE, 0, numberOfCandidateResults, 0); int paramRows = Math.min(req.getParams().getInt("rows", defaultNumberOfResults), docList.size()); if (docList.size() < 1) { rsp.add("Error", "No documents in index"); } else { LinkedList list = new LinkedList(); while (list.size() < paramRows) { DocList auxList = docList.subset((int) (Math.random() * docList.size()), 1); Document doc = null; for (DocIterator it = auxList.iterator(); it.hasNext(); ) { doc = searcher.doc(it.nextDoc()); } if (!list.contains(doc)) { list.add(doc); } } rsp.addResponse(list); } }
Example 6
Source File: TestXJoinSearchComponent.java From BioSolr with Apache License 2.0 | 6 votes |
@Test @SuppressWarnings("rawtypes") public void testUngrouped() { ModifiableSolrParams params = new ModifiableSolrParams(); NamedList results = test(params, "xjoin"); testXJoinResults(results, "xjoin"); ResultContext response = (ResultContext)results.get("response"); DocList docs = response.docs; assertEquals(2, docs.size()); DocIterator it = docs.iterator(); assertTrue(it.hasNext()); assertEquals(1, it.nextDoc()); assertTrue(it.hasNext()); assertEquals(3, it.nextDoc()); assertFalse(it.hasNext()); }
Example 7
Source File: TestXJoinSearchComponent.java From BioSolr with Apache License 2.0 | 6 votes |
@Test @SuppressWarnings("rawtypes") public void testUngrouped() { ModifiableSolrParams params = new ModifiableSolrParams(); NamedList results = test(params, "xjoin"); testXJoinResults(results, "xjoin"); ResultContext response = (ResultContext)results.get("response"); DocList docs = response.getDocList(); assertEquals(2, docs.size()); DocIterator it = docs.iterator(); assertTrue(it.hasNext()); assertEquals(1, it.nextDoc()); assertTrue(it.hasNext()); assertEquals(3, it.nextDoc()); assertFalse(it.hasNext()); }
Example 8
Source File: TestXJoinSearchComponent.java From BioSolr with Apache License 2.0 | 6 votes |
@Test @SuppressWarnings("rawtypes") public void testGroupedSimple() { ModifiableSolrParams params = new ModifiableSolrParams(); params.add("group", "true"); params.add("group.field", "colour"); params.add("group.format", "simple"); NamedList results = test(params, "xjoin"); testXJoinResults(results, "xjoin"); NamedList grouped = (NamedList)results.get("grouped"); NamedList colours = (NamedList)grouped.get("colour"); assertEquals(2, colours.get("matches")); DocList docs = (DocList)colours.get("doclist"); assertEquals(docs.size(), 2); DocIterator it = docs.iterator(); assertTrue(it.hasNext()); assertEquals(1, it.nextDoc()); assertTrue(it.hasNext()); assertEquals(3, it.nextDoc()); assertFalse(it.hasNext()); }
Example 9
Source File: TestSimple.java From BioSolr with Apache License 2.0 | 5 votes |
@Test @SuppressWarnings("rawtypes") public void testSimpleXJoinResultsFactory() { ModifiableSolrParams params = new ModifiableSolrParams(); params.add("fl", "*, score"); params.add("xjoin", "false"); params.add("xjoin5", "true"); params.add("xjoin5.fl", "*"); // score boosts using value source parser params.add("defType", "edismax"); params.add("bf", "xjoin5(value)"); NamedList results = test(params, "xjoin5"); ResultContext response = (ResultContext)results.get("response"); DocList docs = response.docs; assertEquals(2, docs.size()); DocIterator it = docs.iterator(); assertTrue(it.hasNext()); assertEquals(0, it.nextDoc()); double score0 = it.score(); assertTrue(it.hasNext()); assertEquals(2, it.nextDoc()); double score2 = it.score(); assertFalse(it.hasNext()); // bf score boost for testid=0 only assertTrue(score0 > score2); List externalList = (List)((NamedList)results.get("xjoin5")).get("external"); NamedList hit0 = (NamedList)externalList.get(0); assertEquals("0", hit0.get("joinId")); NamedList doc0 = (NamedList)hit0.get("doc"); assertEquals("red", doc0.get("colour")); assertEquals(10.5, doc0.get("value")); }
Example 10
Source File: TestSimple.java From BioSolr with Apache License 2.0 | 5 votes |
@Test @SuppressWarnings("rawtypes") public void testSimpleXJoinResultsFactory() { ModifiableSolrParams params = new ModifiableSolrParams(); params.add("fl", "*, score"); params.add("xjoin", "false"); params.add("xjoin5", "true"); params.add("xjoin5.fl", "*"); // score boosts using value source parser params.add("defType", "edismax"); params.add("bf", "xjoin5(value)"); NamedList results = test(params, "xjoin5"); ResultContext response = (ResultContext)results.get("response"); DocList docs = response.docs; assertEquals(2, docs.size()); DocIterator it = docs.iterator(); assertTrue(it.hasNext()); assertEquals(0, it.nextDoc()); double score0 = it.score(); assertTrue(it.hasNext()); assertEquals(2, it.nextDoc()); double score2 = it.score(); assertFalse(it.hasNext()); // bf score boost for testid=0 only assertTrue(score0 > score2); List externalList = (List)((NamedList)results.get("xjoin5")).get("external"); NamedList hit0 = (NamedList)externalList.get(0); assertEquals("0", hit0.get("joinId")); NamedList doc0 = (NamedList)hit0.get("doc"); assertEquals("red", doc0.get("colour")); assertEquals(10.5, doc0.get("value")); }
Example 11
Source File: TestSimple.java From BioSolr with Apache License 2.0 | 5 votes |
@Test @SuppressWarnings("rawtypes") public void testSimpleXJoinResultsFactory() { ModifiableSolrParams params = new ModifiableSolrParams(); params.add("fl", "*, score"); params.add("xjoin", "false"); params.add("xjoin5", "true"); params.add("xjoin5.fl", "*"); // score boosts using value source parser params.add("defType", "edismax"); params.add("bf", "xjoin5(value)"); NamedList results = test(params, "xjoin5"); ResultContext response = (ResultContext)results.get("response"); DocList docs = response.getDocList(); assertEquals(2, docs.size()); DocIterator it = docs.iterator(); assertTrue(it.hasNext()); assertEquals(0, it.nextDoc()); double score0 = it.score(); assertTrue(it.hasNext()); assertEquals(2, it.nextDoc()); double score2 = it.score(); assertFalse(it.hasNext()); // bf score boost for testid=0 only assertTrue(score0 > score2); List externalList = (List)((NamedList)results.get("xjoin5")).get("external"); NamedList hit0 = (NamedList)externalList.get(0); assertEquals("0", hit0.get("joinId")); NamedList doc0 = (NamedList)hit0.get("doc"); assertEquals("red", doc0.get("colour")); assertEquals(10.5, doc0.get("value")); }
Example 12
Source File: UnifiedSolrHighlighter.java From lucene-solr with Apache License 2.0 | 5 votes |
/** * Converts solr's DocList to the int[] docIDs */ protected int[] toDocIDs(DocList docs) { int[] docIDs = new int[docs.size()]; DocIterator iterator = docs.iterator(); for (int i = 0; i < docIDs.length; i++) { if (!iterator.hasNext()) { throw new AssertionError(); } docIDs[i] = iterator.nextDoc(); } if (iterator.hasNext()) { throw new AssertionError(); } return docIDs; }
Example 13
Source File: SolrPluginUtils.java From lucene-solr with Apache License 2.0 | 5 votes |
/** * Pre-fetch documents into the index searcher's document cache. * * This is an entirely optional step which you might want to perform for * the following reasons: * * <ul> * <li>Locates the document-retrieval costs in one spot, which helps * detailed performance measurement</li> * * <li>Determines a priori what fields will be needed to be fetched by * various subtasks, like response writing and highlighting. This * minimizes the chance that many needed fields will be loaded lazily. * (it is more efficient to load all the field we require normally).</li> * </ul> * * If lazy field loading is disabled, this method does nothing. */ public static void optimizePreFetchDocs(ResponseBuilder rb, DocList docs, Query query, SolrQueryRequest req, SolrQueryResponse res) throws IOException { SolrIndexSearcher searcher = req.getSearcher(); if(!searcher.getDocFetcher().isLazyFieldLoadingEnabled()) { // nothing to do return; } ReturnFields returnFields = res.getReturnFields(); if(returnFields.getLuceneFieldNames() != null) { Set<String> fieldFilter = returnFields.getLuceneFieldNames(); if (rb.doHighlights) { // copy return fields list fieldFilter = new HashSet<>(fieldFilter); // add highlight fields SolrHighlighter highlighter = HighlightComponent.getHighlighter(req.getCore()); for (String field: highlighter.getHighlightFields(query, req, null)) fieldFilter.add(field); // fetch unique key if one exists. SchemaField keyField = searcher.getSchema().getUniqueKeyField(); if(null != keyField) fieldFilter.add(keyField.getName()); } // get documents DocIterator iter = docs.iterator(); for (int i=0; i<docs.size(); i++) { searcher.doc(iter.nextDoc(), fieldFilter); } } }
Example 14
Source File: ResponseLogComponent.java From lucene-solr with Apache License 2.0 | 5 votes |
protected void processScores(ResponseBuilder rb, DocList dl, IndexSchema schema, SolrIndexSearcher searcher) throws IOException { StringBuilder sb = new StringBuilder(); Set<String> fields = Collections.singleton(schema.getUniqueKeyField().getName()); for(DocIterator iter = dl.iterator(); iter.hasNext();) { sb.append(schema.printableUniqueKey(searcher.doc(iter.nextDoc(), fields))) .append(':') .append(iter.score()) .append(','); } if (sb.length() > 0) { rb.rsp.addToLog("responseLog", sb.substring(0, sb.length() - 1)); } }
Example 15
Source File: ResponseLogComponent.java From lucene-solr with Apache License 2.0 | 5 votes |
protected void processIds(ResponseBuilder rb, DocList dl, IndexSchema schema, SolrIndexSearcher searcher) throws IOException { StringBuilder sb = new StringBuilder(); Set<String> fields = Collections.singleton(schema.getUniqueKeyField().getName()); for(DocIterator iter = dl.iterator(); iter.hasNext();) { sb.append(schema.printableUniqueKey(searcher.doc(iter.nextDoc(), fields))) .append(','); } if (sb.length() > 0) { rb.rsp.addToLog("responseLog", sb.substring(0, sb.length() - 1)); } }
Example 16
Source File: AutocompleteResponseWriter.java From apache-solr-essentials with Apache License 2.0 | 4 votes |
/** * Here the writer creates its output. * * @param writer the character stream writer. * @param request the current {@link SolrQueryRequest} * @param response the output response. * @throws IOException in case of I/O failure. */ @SuppressWarnings("rawtypes") @Override public void write( final Writer writer, final SolrQueryRequest request, final SolrQueryResponse response) throws IOException { // 1. Get a reference to values that compound the current response final NamedList elements = response.getValues(); // 2. Use a StringBuilder to build the output final StringBuilder builder = new StringBuilder("{") .append("query:'") .append(request.getParams().get(CommonParams.Q)) .append("',"); // 3. Get a reference to the object which hold the query result final Object value = elements.getVal(1); if (value instanceof ResultContext) { final ResultContext context = (ResultContext) value; // The ordered list (actually the page subset) of matched documents final DocList ids = context.docs; if (ids != null) { final SolrIndexSearcher searcher = request.getSearcher(); final DocIterator iterator = ids.iterator(); builder.append("suggestions:["); // 4. Iterate over documents for (int i = 0; i < ids.size(); i++) { // 5. For each document we need to get the corresponding "label" attribute final Document document = searcher.doc(iterator.nextDoc(), FIELDS); if (i > 0) { builder.append(","); } // 6. Append the label value to writer output builder .append("'") .append(((String) document.get("label")).replaceAll("'", "\\\\'").replaceAll("\"", "\\\\\"")) .append("'"); } builder.append("]").append("}"); } } // 7. and finally write out the built character stream by means of output writer. writer.write(builder.toString()); }
Example 17
Source File: SolrInformationServer.java From SearchServices with GNU Lesser General Public License v3.0 | 4 votes |
@Override public void reindexNodeByQuery(String query) throws IOException, JSONException { RefCounted<SolrIndexSearcher> refCounted = null; try (SolrQueryRequest request = newSolrQueryRequest()) { refCounted = core.getSearcher(false, true, null); SolrIndexSearcher solrIndexSearcher = refCounted.get(); NumericDocValues dbidDocValues = solrIndexSearcher.getSlowAtomicReader().getNumericDocValues(QueryConstants.FIELD_DBID); List<Node> batch = new ArrayList<>(200); DocList docList = cloud.getDocList(nativeRequestHandler, request, query.startsWith("{") ? query : "{!afts}"+query); for (DocIterator it = docList.iterator(); it.hasNext(); /**/) { int docID = it.nextDoc(); // Obtain the ACL ID for this ACL doc. long dbid = dbidDocValues.get(docID); Node node = new Node(); node.setId(dbid); node.setStatus(SolrApiNodeStatus.UNKNOWN); node.setTxnId(Long.MAX_VALUE); batch.add(node); if(batch.size() >= 200) { indexNodes(batch, true); batch.clear(); } } if(batch.size() > 0) { indexNodes(batch, true); batch.clear(); } } finally { ofNullable(refCounted).ifPresent(RefCounted::decref); } }