Examples of SenseiSystemInfo


Examples of com.senseidb.search.req.SenseiSystemInfo

                                               List<RuntimeFacetHandlerFactory<?, ?>> runtimeFacets,
                                               PluggableSearchEngineManager pluggableSearchEngineManager,
                                               int invertedIndexPenalty)
            throws JSONException, ConfigurationException {
        Set<String> pluggableSearchEngineFacetNames = pluggableSearchEngineManager.getFacetNames();
        SenseiSystemInfo sysInfo = new SenseiSystemInfo();
        JSONArray facetsList = schemaObj.optJSONArray("facets");

        int count = 0;

        if (facetsList != null) {
            count = facetsList.length();
        }

        if (count <= 0) {
            return sysInfo;
        }

        JSONObject table = schemaObj.optJSONObject("table");
        if (table == null) {
            throw new ConfigurationException("Empty schema");
        }
        JSONArray columns = table.optJSONArray("columns");
        Map<String, JSONObject> columnMap = new HashMap<String, JSONObject>();
        for (int i = 0; i < columns.length(); ++i) {
            JSONObject column = columns.getJSONObject(i);
            try {
                String name = column.getString("name");
                columnMap.put(name, column);
            } catch (Exception e) {
                throw new ConfigurationException("Error parsing schema: ", e);
            }
        }

        Map<String, TermListFactory<?>> termListFactoryMap = getPredefinedTermListFactoryMap(schemaObj);

        Set<SenseiSystemInfo.SenseiFacetInfo> facetInfos = new HashSet<SenseiSystemInfo.SenseiFacetInfo>();
        for (int i = 0; i < count; ++i) {

            JSONObject facet = facetsList.getJSONObject(i);
            try {
                String name = facet.getString("name");
                if (UID_FACET_NAME.equals(name)) {
                    logger.error("facet name: " + UID_FACET_NAME + " is reserved, skipping...");
                    continue;
                }

                String type = facet.getString("type");
                String fieldName = facet.optString("column", name);
                Set<String> dependSet = new HashSet<String>();
                JSONArray dependsArray = facet.optJSONArray("depends");

                if (dependsArray != null) {
                    int depCount = dependsArray.length();
                    for (int k = 0; k < depCount; ++k) {
                        dependSet.add(dependsArray.getString(k));
                    }
                }

                SenseiSystemInfo.SenseiFacetInfo facetInfo = new SenseiSystemInfo.SenseiFacetInfo(name);
                Map<String, String> facetProps = new HashMap<String, String>();
                facetProps.put("type", type);
                facetProps.put("column", fieldName);
                JSONObject column = columnMap.get(fieldName);
                String columnType = (column == null) ? "" : column.optString("type", "");
                if (column != null && column.opt("activity") != null && column.optBoolean("activity")) {
                    columnType = "aint";
                }
                facetProps.put("column_type", columnType);
                facetProps.put("depends", dependSet.toString());

                JSONArray paramList = facet.optJSONArray("params");

                Map<String, List<String>> paramMap = parseParams(paramList);

                for (Entry<String, List<String>> entry : paramMap.entrySet()) {
                    facetProps.put(entry.getKey(), entry.getValue().toString());
                }

                facetInfo.setProps(facetProps);
                facetInfos.add(facetInfo);
                if (pluggableSearchEngineFacetNames.contains(name)) {
                    continue;
                }
                FacetHandler<?> facetHandler = null;
                if (type.equals("simple")) {
                    facetHandler = buildSimpleFacetHandler(name, fieldName, dependSet, termListFactoryMap.get(fieldName), invertedIndexPenalty);
                } else if (type.equals("path")) {
                    facetHandler = buildPathHandler(name, fieldName, paramMap, invertedIndexPenalty);
                } else if (type.equals("range")) {
                    if (column.optBoolean("multi")) {
                        facetHandler = new MultiRangeFacetHandler(name, fieldName, null, termListFactoryMap.get(fieldName),
                                buildPredefinedRanges(paramMap));
                    } else {
                        facetHandler = buildRangeHandler(name, fieldName, termListFactoryMap.get(fieldName), paramMap);
                    }
                } else if (type.equals("multi")) {
                    facetHandler = buildMultiHandler(name, fieldName, termListFactoryMap.get(fieldName), dependSet, invertedIndexPenalty);
                } else if (type.equals("compact-multi")) {
                    facetHandler = buildCompactMultiHandler(name, fieldName, dependSet, termListFactoryMap.get(fieldName));

                } else if (type.equals("weighted-multi")) {
                    facetHandler = buildWeightedMultiHandler(name, fieldName, termListFactoryMap.get(fieldName), dependSet,
                            invertedIndexPenalty);
                } else if (type.equals("attribute")) {
                    facetHandler = new AttributesFacetHandler(name, fieldName, termListFactoryMap.get(fieldName), null,
                            facetProps);
                } else if (type.equals("histogram")) {
                    // A histogram facet handler is always dynamic
                    RuntimeFacetHandlerFactory<?, ?> runtimeFacetFactory = getHistogramFacetHandlerFactory(facet, name, paramMap);
                    runtimeFacets.add(runtimeFacetFactory);
                    facetInfo.setRunTime(true);
                } else if (type.equals("dynamicTimeRange")) {
                    if (dependSet.isEmpty()) {
                        Assert.isTrue(fieldName != null && fieldName.length() > 0, "Facet handler " + name + " requires either depends or column attributes");
                        RangeFacetHandler internalFacet = new RangeFacetHandler(name + "_internal", fieldName, new PredefinedTermListFactory(Long.class, DynamicTimeRangeFacetHandler.NUMBER_FORMAT), null);
                        facets.add(internalFacet);
                        dependSet.add(internalFacet.getName());
                    }
                    RuntimeFacetHandlerFactory<?, ?> runtimeFacetFactory = getDynamicTimeFacetHandlerFactory(name, fieldName, dependSet, paramMap);
                    runtimeFacets.add(runtimeFacetFactory);
                    facetInfo.setRunTime(true);

                } else if (type.equals("custom")) {
                    boolean isDynamic = facet.optBoolean("dynamic");
                    // Load from custom-facets spring configuration.
                    if (isDynamic) {
                        RuntimeFacetHandlerFactory<?, ?> runtimeFacetFactory = pluginRegistry.getRuntimeFacet(name);
                        runtimeFacets.add(runtimeFacetFactory);
                        facetInfo.setRunTime(true);
                    } else {
                        facetHandler = pluginRegistry.getFacet(name);
                    }
                } else {
                    throw new IllegalArgumentException("type not supported: " + type);
                }

                if (facetHandler != null) {
                    facets.add(facetHandler);
                }
            } catch (Exception e) {
                throw new ConfigurationException("Error parsing schema: "
                        + facet, e);
            }
        }

        facets.addAll((Collection<? extends FacetHandler<?>>) pluggableSearchEngineManager.createFacetHandlers());
        // uid facet handler to be added by default
        UIDFacetHandler uidHandler = new UIDFacetHandler(UID_FACET_NAME);
        facets.add(uidHandler);
        sysInfo.setFacetInfos(facetInfos);

        return sysInfo;
    }
View Full Code Here

Examples of com.senseidb.search.req.SenseiSystemInfo

  }

  @Override
  public SenseiSystemInfo mergeResults(SenseiRequest request, List<SenseiSystemInfo> resultList)
  {
    SenseiSystemInfo result = new SenseiSystemInfo();
    if (resultList == null)
      return result;

    for (SenseiSystemInfo res : resultList)
    {
      result.setNumDocs(result.getNumDocs()+res.getNumDocs());
      if (result.getLastModified() < res.getLastModified())
        result.setLastModified(res.getLastModified());
      if (result.getVersion() == null || _versionComparator.compare(result.getVersion(), res.getVersion()) < 0)
        result.setVersion(res.getVersion());
      if (res.getFacetInfos() != null)
        result.setFacetInfos(res.getFacetInfos());
      if (res.getClusterInfo() != null) {
        if (result.getClusterInfo() != null)
          result.getClusterInfo().addAll(res.getClusterInfo());
        else
          result.setClusterInfo(res.getClusterInfo());
      }
    }

    return result;
  }
View Full Code Here

Examples of com.senseidb.search.req.SenseiSystemInfo

        List<RuntimeFacetHandlerFactory<?, ?>> runtimeFacetHandlerFactories = new LinkedList<RuntimeFacetHandlerFactory<?, ?>>();

        int invertedIndexPenalty = _senseiConf.getInt(SENSEI_SEARCH_INVERTED_INDEX_PENALTY,
                AdaptiveFacetFilter.DEFAULT_INVERTED_INDEX_PENALTY);

        SenseiSystemInfo sysInfo = null;

        try {
            sysInfo = SenseiFacetHandlerBuilder.buildFacets(_schemaDoc,
                    pluginRegistry,
                    facetHandlers,
                    runtimeFacetHandlerFactories,
                    pluggableSearchEngineManager,
                    invertedIndexPenalty);
        } catch (JSONException jse) {
            throw new ConfigurationException(jse.getMessage(), jse);
        }


        if (sysInfo != null) {
            sysInfo.setSchema(_schemaDoc.toString());

            try {
                List<SenseiSystemInfo.SenseiNodeInfo> clusterInfo = new ArrayList(1);
                String addr = NetUtil.getHostAddress();
                clusterInfo.add(new SenseiSystemInfo.SenseiNodeInfo(nodeid, partitions,
                        String.format("%s:%d", addr, _senseiConf.getInt(SERVER_PORT)),
                        String.format("http://%s:%d", addr, _senseiConf.getInt(SERVER_BROKER_PORT))));
                sysInfo.setClusterInfo(clusterInfo);
            } catch (Exception e) {
                throw new ConfigurationException(e.getMessage(), e);
            }
        }
        ZoieIndexableInterpreter interpreter = pluginRegistry.getBeanByFullPrefix(SENSEI_INDEX_INTERPRETER, ZoieIndexableInterpreter.class);
View Full Code Here

Examples of com.senseidb.search.req.SenseiSystemInfo

  @Override
  public SenseiSystemInfo getSystemInfo()
      throws SenseiException
  {
    SenseiSystemInfo result;
    InputStream is = null;

    try
    {
      URI requestURI = buildSysInfoRequestURI();
View Full Code Here

Examples of com.senseidb.search.req.SenseiSystemInfo

  }

  public static SenseiSystemInfo buildSysInfo(JSONObject jsonObj)
      throws JSONException
  {
    SenseiSystemInfo result = new SenseiSystemInfo();

    result.setNumDocs(jsonObj.getInt(SenseiSearchServletParams.PARAM_SYSINFO_NUMDOCS));
    result.setLastModified(Long.parseLong(jsonObj.getString(SenseiSearchServletParams.PARAM_SYSINFO_LASTMODIFIED)));
    result.setVersion(jsonObj.getString(SenseiSearchServletParams.PARAM_SYSINFO_VERSION));
    result.setFacetInfos(convertFacetInfos(jsonObj.getJSONArray(SenseiSearchServletParams.PARAM_SYSINFO_FACETS)));
    result.setClusterInfo(convertClusterInfo(jsonObj.getJSONArray(SenseiSearchServletParams.PARAM_SYSINFO_CLUSTERINFO)));

    return result;
  }
View Full Code Here

Examples of com.senseidb.search.req.SenseiSystemInfo

  }

  @Override
  public SenseiSystemInfo handlePartitionedRequest(SenseiRequest request,
      List<BoboIndexReader> readerList,SenseiQueryBuilderFactory queryBuilderFactory) throws Exception {
    SenseiSystemInfo res = new SenseiSystemInfo();

    MultiBoboBrowser browser = null;
    try
    {
      browser = new MultiBoboBrowser(BoboBrowser.createBrowsables(readerList));
      res.setNumDocs(browser.numDocs());

      return res;
    }
    catch (Exception e)
    {
View Full Code Here

Examples of com.senseidb.search.req.SenseiSystemInfo

  }

  @Override
  public SenseiSystemInfo mergePartitionedResults(SenseiRequest r,
      List<SenseiSystemInfo> resultList) {
    SenseiSystemInfo result = _core.getSystemInfo();
    result.setNumDocs(0);
    for (SenseiSystemInfo res : resultList)
    {
      result.setNumDocs(result.getNumDocs() + res.getNumDocs());
    }

    return result;
  }
View Full Code Here

Examples of com.senseidb.search.req.SenseiSystemInfo

    return result;
  }

  @Override
  public SenseiSystemInfo getEmptyResultInstance(Throwable error) {
    return new SenseiSystemInfo();
  }
View Full Code Here

Examples of com.senseidb.search.req.SenseiSystemInfo

  }

  public SenseiSystemInfo getSystemInfo()
  {
    if (_senseiSystemInfo == null)
      _senseiSystemInfo = new SenseiSystemInfo();

    //if (_senseiSystemInfo.getClusterInfo() == null)
    //{
      //List<Integer> partitionList = new ArrayList<Integer>(_partitions.length);
View Full Code Here

Examples of com.senseidb.search.req.SenseiSystemInfo

    {
      try
      {
        count++;
        logger.info("Trying to get sysinfo");
        SenseiSystemInfo sysInfo = _senseiSysBroker.browse(new SenseiRequest());

        _facetInfoMap = sysInfo != null && sysInfo.getFacetInfos() != null ? extractFacetInfo(sysInfo) : new HashMap<String, String[]>();
        _compiler = new BQLCompiler(_facetInfoMap);
        break;
      }
      catch (Exception e)
      {
        logger.info("Hit exception trying to get sysinfo", e);
        if (count > 10)
        {
          logger.error("Give up after 10 tries to get sysinfo");
          throw new ServletException(e.getMessage(), e);
        }
        else
        {
          try
          {
            Thread.sleep(2000);
          }
          catch (InterruptedException e2)
          {
            logger.error("Hit InterruptedException in getting sysinfo: ", e);
          }
        }
      }
    }

    // Start the stat timer to get some of the sys stat:
    _statTimer.scheduleAtFixedRate(new TimerTask()
    {
      public void run()
      {
        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);
        }
        if (totalDocs > 0)
        {
          totalDocsCounter.clear();
          totalDocsCounter.inc(totalDocs);
        }
        else
        {
          logger.warn("Unable to get total docs");
        }

        try
        {
          SenseiSystemInfo sysInfo = _senseiSysBroker.browse(new SenseiRequest());

          if (sysInfo != null && sysInfo.getFacetInfos() != null)
          {
            _facetInfoMap = extractFacetInfo(sysInfo);
            _compiler.setFacetInfoMap(_facetInfoMap);
          }
        }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.