List of usage examples for org.apache.solr.highlight SolrHighlighter isHighlightingEnabled
public boolean isHighlightingEnabled(SolrParams params)
From source file:org.solbase.SolbaseComponent.java
License:Apache License
public void process(ResponseBuilder rb) throws IOException { DocList list = rb.getResults().docList; DocIterator it = list.iterator();//from ww w . ja va 2 s . com List<Integer> docIds = new ArrayList<Integer>(list.size()); while (it.hasNext()) docIds.add(it.next()); IndexReader reader = (IndexReader) ((SolrIndexReader) rb.req.getSearcher().getIndexReader()) .getWrappedReader(); SolrQueryRequest req = rb.req; SolrParams params = req.getParams(); String ids = params.get(ShardParams.IDS); // only set firstPhase threadLocal in case of sharding. // this is to optimize our querying time by not fetching actually doc obj in first phase of sharding // first phase of sharding only tries to fetch docids and scores which are already in tv if (SolbaseShardUtil.getNumShard() != 0) { if (ids != null) { IndexReader.firstPhase.set(false); } else { IndexReader.firstPhase.set(true); } } else { // it's always false in case of stand alone IndexReader.firstPhase.set(false); } logger.debug(reader.getIndexName() + " : Fetching " + docIds.size() + " Docs"); if (docIds.size() > 0) { List<byte[]> fieldFilter = null; Set<String> returnFields = rb.rsp.getReturnFields(); if (returnFields != null) { // copy return fields list fieldFilter = new ArrayList<byte[]>(returnFields.size()); for (String field : returnFields) { fieldFilter.add(Bytes.toBytes(field)); } // add highlight fields SolrHighlighter highligher = rb.req.getCore().getHighlighter(); if (highligher.isHighlightingEnabled(rb.req.getParams())) { for (String field : highligher.getHighlightFields(rb.getQuery(), rb.req, null)) if (!returnFields.contains(field)) fieldFilter.add(Bytes.toBytes(field)); } // fetch unique key if one exists. SchemaField keyField = rb.req.getSearcher().getSchema().getUniqueKeyField(); if (null != keyField) if (!returnFields.contains(keyField)) fieldFilter.add(Bytes.toBytes(keyField.getName())); } FieldSelector selector = new SolbaseFieldSelector(docIds, fieldFilter); // This will bulk load these docs rb.req.getSearcher().getReader().document(docIds.get(0), selector); } ReaderCache.flushThreadLocalCaches(reader.getIndexName()); }
From source file:solandra.SolandraReopenComponent.java
License:Apache License
public void process(ResponseBuilder rb) throws IOException { DocList list = rb.getResults().docList; DocIterator it = list.iterator();/*ww w. j av a 2s .com*/ List<Integer> docIds = new ArrayList<Integer>(list.size()); while (it.hasNext()) docIds.add(it.next()); logger.debug("Fetching " + docIds.size() + " Docs"); if (docIds.size() > 0) { List<byte[]> fieldFilter = null; Set<String> returnFields = rb.rsp.getReturnFields(); if (returnFields != null) { // copy return fields list fieldFilter = new ArrayList<byte[]>(returnFields.size()); for (String field : returnFields) { fieldFilter.add(field.getBytes()); } // add highlight fields SolrHighlighter highligher = rb.req.getCore().getHighlighter(); if (highligher.isHighlightingEnabled(rb.req.getParams())) { for (String field : highligher.getHighlightFields(rb.getQuery(), rb.req, null)) if (!returnFields.contains(field)) fieldFilter.add(field.getBytes()); } // fetch unique key if one exists. SchemaField keyField = rb.req.getSearcher().getSchema().getUniqueKeyField(); if (null != keyField) if (!returnFields.contains(keyField)) fieldFilter.add(keyField.getName().getBytes()); } FieldSelector selector = new SolandraFieldSelector(docIds, fieldFilter); rb.req.getSearcher().getReader().document(docIds.get(0), selector); } }