Package com.senseidb.search.req

Examples of com.senseidb.search.req.SenseiResult


  @Override
  public SenseiResult doQuery(SenseiRequest req)
      throws SenseiException
  {
    SenseiResult result;
    InputStream is = null;

    try
    {
      List<NameValuePair> queryParams = convertRequestToQueryParams(req);
View Full Code Here


  }

  public static SenseiResult buildSenseiResult(JSONObject jsonObj)
      throws JSONException
  {
    SenseiResult result = new SenseiResult();

    result.setTid(Long.parseLong(jsonObj.getString(SenseiSearchServletParams.PARAM_RESULT_TID)));
    result.setTotalDocs(jsonObj.getInt(SenseiSearchServletParams.PARAM_RESULT_TOTALDOCS));
    result.setParsedQuery(jsonObj.getString(SenseiSearchServletParams.PARAM_RESULT_PARSEDQUERY));
    result.setNumHits(jsonObj.getInt(SenseiSearchServletParams.PARAM_RESULT_NUMHITS));
    if (jsonObj.has(SenseiSearchServletParams.PARAM_RESULT_NUMGROUPS))
    {
      result.setNumGroups(jsonObj.getInt(SenseiSearchServletParams.PARAM_RESULT_NUMGROUPS));
    }
    result.setTime(Long.parseLong(jsonObj.getString(SenseiSearchServletParams.PARAM_RESULT_TIME)));
    result.addAll(convertFacetMap(jsonObj.getJSONObject(SenseiSearchServletParams.PARAM_RESULT_FACETS)));
    result.setHits(convertHitsArray(jsonObj.getJSONArray(SenseiSearchServletParams.PARAM_RESULT_HITS)));

    return result;
  }
View Full Code Here

  }
 
  @Override
  public SenseiResult mergeResults(SenseiRequest request, List<SenseiResult> resultList)
  {
    SenseiResult res = ResultMerger.merge(request, resultList, false);

    if (request.isFetchStoredFields()) {  // Decompress binary data.
      for(SenseiHit hit : res.getSenseiHits()) {
        try
        {
          Document doc = hit.getStoredFields();
          byte[] dataBytes = doc.getBinaryValue(SenseiSchema.SRC_DATA_COMPRESSED_FIELD_NAME);
          if (dataBytes!=null && dataBytes.length>0){
            ByteArrayOutputStream bout = new ByteArrayOutputStream();
            byte[] buf = new byte[1024]// 1k buffer
            ByteArrayInputStream bin = new ByteArrayInputStream(dataBytes);
            GZIPInputStream gzipStream = new GZIPInputStream(bin);

            int len;
            while ((len = gzipStream.read(buf)) > 0) {
              bout.write(buf, 0, len);
            }
            bout.flush();

            byte[] uncompressed = bout.toByteArray();
            hit.setSrcData(new String(uncompressed,"UTF-8"));
          }
          else {
            dataBytes = doc.getBinaryValue(SenseiSchema.SRC_DATA_FIELD_NAME);
            if (dataBytes!=null && dataBytes.length>0) {
              hit.setSrcData(new String(dataBytes,"UTF-8"));
            }
          }
          doc.removeFields(SenseiSchema.SRC_DATA_COMPRESSED_FIELD_NAME);
          doc.removeFields(SenseiSchema.SRC_DATA_FIELD_NAME);
        }
        catch(Exception e)
        {
          res.addError(new SenseiError(e.getMessage(),ErrorType.BrokerGatherError));
          logger.error(e.getMessage(),e);
        }
      }
    }
View Full Code Here

          }
        }
      }
    }

    SenseiResult merged = new SenseiResult();
    merged.setHits(hits);
    merged.setNumHits(numHits);
    merged.setNumGroups(numGroups);
    merged.setTotalDocs(totalDocs);
    merged.addAll(mergedFacetMap);

    long end = System.currentTimeMillis();

    merged.setTime(longestTime + end - start);
    mergerErrors(merged, req, results, parsedQuery);
    if (req.getMapReduceFunction() != null) {
      if (onSearchNode) {
        merged.setMapReduceResult(SenseiReduceFunctionWrapper.combine(req.getMapReduceFunction(), SenseiReduceFunctionWrapper.extractMapReduceResults(results)));
      } else {
        //on broker level
        merged.setMapReduceResult(SenseiReduceFunctionWrapper.reduce(req.getMapReduceFunction(), SenseiReduceFunctionWrapper.extractMapReduceResults(results)));
      }
    }
    return merged;
  }
View Full Code Here

  public SenseiResult browse(final SenseiRequest req) throws SenseiException {
    List<String> prunedClusters = federatedPruner.pruneClusters(req, clusters);
    int count = req.getCount();
    int offset = req.getOffset();
    if (count == 0) {
      return new SenseiResult();
    }
   
    List<SenseiResult> results = new ArrayList<SenseiResult>();
    if (!federatedPruner.clusterPrioritiesEqual(req)) {
      for (String cluster : prunedClusters) {
        if (count <= 0) {
          break;
        }
        SenseiRequest request = req.clone();
        request.setCount(count);
        request.setOffset(offset);
        SenseiResult currentResult = brokers.get(cluster).browse(request);
        int numHits = currentResult.getNumHits();
        if (offset >= numHits) {
          offset -= numHits;
          continue;
        } else {
          numHits -= offset;
          offset = 0;
          count -= numHits;
          results.add(currentResult);
        }
      }
    } else {
      for (String cluster : prunedClusters) {      
        SenseiRequest request = req.clone();      
        SenseiResult currentResult = brokers.get(cluster).browse(request);     
        results.add(currentResult);
      }
    }
    SenseiResult res = ResultMerger.merge(req, results, false);
    return res;
  }
View Full Code Here

        {
          requestContext.compiledJson.put(JsonTemplateProcessor.TEMPLATE_MAPPING_PARAM, requestContext.templatesJson);
        }
        requestContext.senseiReq = SenseiRequest.fromJSON(requestContext.compiledJson, _facetInfoMap);
      }
      SenseiResult res = broker.browse(requestContext.senseiReq);
      numHits = res.getNumHits();
      totalDocs = res.getTotalDocs();
      sendResponse(req, resp, requestContext.senseiReq, res);
   } catch (JSONException e) {
      try {
        writeEmptyResponse(req, resp, new SenseiError(e.getMessage(), ErrorType.JsonParsingError));
      } catch (Exception ex) {
View Full Code Here

    }
    return true;
  }

  private void writeEmptyResponse(HttpServletRequest req, HttpServletResponse resp, SenseiError senseiError) throws Exception {
    SenseiResult res = new SenseiResult();
    res.addError(senseiError);
    sendResponse(req, resp, new SenseiRequest(), res);
  }
View Full Code Here

        BrowseSelection sel = new BrowseSelection(SenseiFacetHandlerBuilder.UID_FACET_NAME);
        sel.setValues(vals);
        senseiReq.addSelection(sel);
      }

      SenseiResult res = null;
      if (senseiReq != null)
        res =_senseiBroker.browse(senseiReq);

      if (res != null)
      {
        numHits = res.getNumHits();
        totalDocs = res.getTotalDocs();
      }

      JSONObject ret = new FastJSONObject();
      JSONObject obj = null;
      if (res != null && res.getSenseiHits() != null)
      {
        for (SenseiHit hit : res.getSenseiHits())
        {
          try
          {
            obj = new FastJSONObject(hit.getSrcData());
            ret.put(String.valueOf(hit.getUID()), obj);
View Full Code Here

        Serializer<SenseiRequest, SenseiResult> serializer = CoreSenseiServiceImpl.JAVA_SERIALIZER;
        BrokerConfig brokerConfig = new BrokerConfig(senseiConfiguration, balancerFactory, serializer, senseiServerBuilder.getPluginRegistry());
        brokerConfig.init();
        SenseiBroker senseiBroker = brokerConfig.buildSenseiBroker();
        while (true) {
          SenseiResult senseiResult = senseiBroker.browse(new SenseiRequest());
          int totalDocs = senseiResult.getTotalDocs();
          System.out.println("TotalDocs = " + totalDocs);
          if (totalDocs >= expectedDocs) {
            break;
          }
          Thread.sleep(100);
View Full Code Here

        int totalDocs = 0;
        try
        {
          SenseiRequest req = new SenseiRequest();
          req.setQuery(new SenseiJSONQuery(new FastJSONObject().put("query", "dummy:dummy")));
          SenseiResult res = _senseiBroker.browse(req);
          totalDocs = res.getTotalDocs();
        }
        catch(Exception e)
        {
          logger.warn("Error getting result", e);
        }
View Full Code Here

TOP

Related Classes of com.senseidb.search.req.SenseiResult

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.