public static List<Map<String, String>> getSimilarityByList(
      List<Map<String, String>> listMaps, String _qc, String _fq, String file_Id) throws Exception {

    List<Map<String, String>> _list = new ArrayList<Map<String, String>>();

    Similarity similar = new Similarity();
    String svrURL = "http://slc00yek.us.oracle.com:7011/solr-4.1.0/sc_full/select";
    for (Map<String, String> map : listMaps) {
      String _orig = escape(map.get("svalue"));
      List<Map<String, String>> rcdStr = null;
      if (_qc == null)
        rcdStr =
            getValues(
                svrURL,
                _orig + "\"" + _orig + "\"~10 OR ORIGINAL:\"" + _orig + "\"",
                file_Id,
                1,
                _fq,
                map.get("skey"),
                null);
      else
        rcdStr =
            getValues(
                svrURL,
                _orig + "\"" + _orig + "\"~10 OR ORIGINAL:\"" + _orig + "\"" + _qc,
                file_Id,
                1,
                _fq,
                map.get("skey"),
                null);
      if (rcdStr == null || rcdStr.size() == 0) {
        map.put("tvalue", "");
        map.put("similarity", "0");
        _list.add(map);
        continue;
      }
      double sim = -1;
      int idx = 0;
      for (int i = 0; i < rcdStr.size(); i++) {
        double s = similar.Sim(map.get("svalue"), rcdStr.get(i).get("tvalue"));
        if (s > sim) {
          sim = s;
          idx = i;
        }
      }

      map.put("tvalue", rcdStr.get(idx).get("tvalue"));
      map.put("similarity", String.valueOf(sim));
      // map.put("vkey", rcdStr.get(idx).get("vkey"));
      map.put("filepath", rcdStr.get(idx).get("filepath"));
      rcdStr.clear();
      _list.add(map);
    }
    return _list;
  }
  private static List<Map<String, String>> readSimpleVerifyValues(
      String urlXml, String skey, String _orig) {

    InputStream isXml = null;
    try {
      URL url = new URL(urlXml);
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      conn.connect();
      isXml = conn.getInputStream();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      isXml = null;
    }

    if (isXml == null) {
      return null;
    }

    List<Map<String, String>> rcdStr = new LinkedList<Map<String, String>>();
    Document document;
    boolean validating = false;
    try {
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      factory.setValidating(validating);
      DocumentBuilder builder = factory.newDocumentBuilder();

      document = builder.parse(isXml);
      document.getDocumentElement().normalize();
      NodeList list = document.getElementsByTagName("doc");
      String _filepath = null, _newval = null, _rn, _dn, _cn, _pn;
      StringBuffer _buffer = new StringBuffer();
      int _cnt = 0, _p100 = 0;
      int cnt = zhuan1.length;
      for (int i = 0; i < list.getLength(); i++) {
        // _buffer.delete(0, _buffer.length());
        Node nodeItem = list.item(i);
        NodeList cldList = nodeItem.getChildNodes();
        Map<String, String> itemContent = new HashMap<String, String>();

        for (int j = 0; j < cldList.getLength(); j++) {
          Node cldItem = cldList.item(j);
          Node nodeAtr = cldItem.getAttributes().getNamedItem("name");
          if (nodeAtr == null) {
            continue;
          }

          String atrValue = nodeAtr.getNodeValue().toUpperCase();
          if (skey != null && atrValue.equals("KEY")) {
            _filepath = cldItem.getTextContent();
            if (_filepath.equals(skey)) {
              itemContent.clear();
              itemContent = null;
              break;
            }
          }
          // String contText = cldItem.getTextContent();
          // if (atrValue.equals("FILE_ID")) {
          // itemContent.put("fileId", contText);
          // } else if (atrValue.equals("KEY")) {
          // itemContent.put("key", contText);
          // } else if (atrValue.equals("VALUE")) {
          // itemContent.put("value", contText);
          // }
          int _idx;
          if (atrValue.equals("FILE_PATH")) {
            _filepath = cldItem.getTextContent();
            // System.out.println(_filepath);
            itemContent.put("filepath", _filepath);
          } else if (atrValue.equals("VALUE")) {
            _newval = cldItem.getTextContent();

            for (int ii = 0; ii < cnt; ii++) {
              _newval = _newval.replace(zhuan1[ii], zhuan2[ii]);
            }
            itemContent.put("tvalue", _newval);
          } else if (atrValue.equals("FID")) {
            _dn = cldItem.getTextContent();
            itemContent.put("fid", _dn);
          }
        }
        // itemContent.put("value", _newval);
        // itemContent.put("filepath", _filepath);

        if (itemContent != null) {
          double _sim2 = similar.Sim(_orig, itemContent.get("tvalue"));
          itemContent.put("sim", String.valueOf(_sim2));
          if (_sim2 >= 1) {
            rcdStr.add(_p100++, itemContent);
            _cnt++;
            continue;
          }

          if (_cnt == 0) rcdStr.add(itemContent);
          else {
            int _idx = _cnt - 1;
            while (_idx >= _p100) {
              Map<String, String> _last = rcdStr.get(_idx);
              double _sim1 = Double.parseDouble(_last.get("sim"));

              if (_sim1 >= _sim2) {
                break;
              }
              _idx--;
            }
            if (_idx == _cnt - 1) rcdStr.add(itemContent);
            else rcdStr.add(_idx + 1, itemContent);
          }
          _cnt++;
        }
      }
    } catch (Exception exp) {
      exp.printStackTrace();
      return null;
    }

    return rcdStr;
  }