创建与给定json等效的SolrParams

问题描述 投票:1回答:1

使用solrj 7.3.0版与此版本等效的GenericSolrRequest是什么:

SolrRequest v2request = new V2Request.Builder(String.format("/collections/%s/config", collectionName))
.withMethod(SolrRequest.METHOD.POST)
.withPayload(payload)
.build();

具有以下有效负载

{
  "update-requesthandler": {
    "name": "%s",
    "class": "solr.SearchHandler",
    "defaults": {
      "defType": "edismax",
      "rows": 100,
      "lowercaseOperators": true,
      "qf": "%s",
      "hl.fl": "*",
      "hl.requireFieldMatch": true,
      "lowercaseOperators": true
    }
  }
}

我想出了这一点,不确定如何设置参数以实现与V2 API相同的有效负载:

//ModifiableSolrParams params = new ModifiableSolrParams(); is that possible to use this class with nested fields in json ?

SolrRequest request = new GenericSolrRequest(SolrRequest.METHOD.POST, String.format("/%s/config", collectionName), params);

尝试:

ModifiableSolrParams params = new ModifiableSolrParams();
params.set("command", "update-requesthandler");
params.set("class", "solr.SearchHandler");
params.set(CommonParams.NAME, FREETEXT_REQUEST_HANDLER);
params.set("defType", "edismax");
params.set("lowercaseOperators", true);
params.set(CommonParams.ROWS, 100);
params.set("qf", qfValue);
params.set("hl.fl", "*");
params.set("hl.requireFieldMatch", true);


SolrRequest request = new GenericSolrRequest(SolrRequest.METHOD.POST, String.format("/%s/config", collectionName), solrParams);

request.process(solrClient);

并且在solr端导致异常:

INFO  (qtp592617454-12) [   x:test_index] o.a.s.c.S.Request [test_vertex_index]  webapp=/solr path=/config params={defType=edismax&qf=+gb2d_t^8+cn9_t^1+i9dx_t^3+fcat_t^3+dyit_t^5+rax1_t^3+onb9_t^3+c1s5_t^3+cb9h_t^9+ibr9_t^3+p4p1_t^3+msxx_t^9+ekn9_t^5+cf7p_t^3+cyyt_t^3+i4n9_t^10+2zgl_s^10+mozp_t^8+g6bp_t^5+ie4l_t^3+bzet_t^3+n8qt_t^3+lr0l_t^3+3dol_t^10+egp1_t^8+kbnp_t^10+oydh_t^5+peyt_t^5+qy9x_t^3+31tx_s^9+c2kl_t^3+ighx_t^3+fdvp_t^8+jwn9_t^3+jmdh_t^3+kav9_t^10+kd8l_t^3+jz0l_t^3+ju9x_t^9+qz2d_t^3+jksl_t^8+olqd_t^3+ov7p_t^8+cn45_t^5+iyt_t^10+311h_t^9+clj9_t^9+cvt1_t^3+ghdx_t^9+33et_t^3+kcg5_t^3+pm2t_t^5+hamd_t^10+n1mt_t^3+h7gl_t^8+gkjp_t^10+csn9_t^3+jv2d_t^5+n37p_t^3+pp8l_t^5+gm4l_t^10+g4qt_t^10+ke11_t^3+jn5x_t^3+jsp1_t^9+dath_t^3+mw3p_t^9+37d1_t^3+x6t_t^3+dgcl_t^3+c45h_t^8+i685_t^3+k9ad_t^3+3ait_t^10+mz9h_t^5+lc05_t^3+p69x_t^3+cy6d_t^3+i5fp_t^3+h91h_t^10+gbut_t^10+3c3p_t^10+yrp_t^10+f5z9_t^3+ifph_t^3+f4ed_t^9+iex1_t^3+mww5_t^3+ledh_t^3+k0lh_t^10+k26d_t^10+p345_t^3+d0jp_t^3+djid_t^3+k5c5_t^3+f6rp_t^3+libp_t^3+cef9_t^5+cc1x_t^3+ffgl_t^8+9vk5_t^9+9x51_t^8+i7t1_t^10+9nnp_t^5+kvet_t^3+jzt1_t^9+ldl1_t^3+lj45_t^3+lf5x_t^3+f9xh_t^5+fh1h_t^3+i8lh_t^3+c0zp_t^9+cr2d_t^9+idc5_t^10+rchx_t^3+re2t_t^3+a139_t^10+dipx_t^3+c4xx_t^3+c7b9_t^9+jk05_t^5+cphh_t^3+cah1_t^9+muit_t^3+jnyd_t^5+h0cl_t^3+r5dx_t^3+cg05_t^3+e39h_t^3+oqh1_t^8+ctfp_t^3+jvut_t^3+oz5x_t^3+fjet_t^3+qzut_t^3+e1ol_t^9+ms5h_t^3+k4jp_t^3+jqbp_t^3+i32d_t^3+bxtx_t^9+cxdx_t^3+e0w5_t^3+nabp_t^9+i1hh_t^3+pgjp_t^5+n5l1_t^3+mqkl_t^8+hc79_t^8+n0ud_t^9+mvb9_t^8+owsl_t^10+n6dh_t^9+derp_t^9+35s5_t^3+e4ud_t^8+r0n9_t^3+f8cl_t^9+czr9_t^3+n2f9_t^8+p8n9_t^3+k64l_t^3+lcsl_t^3+myh1_t^8+psed_t^5+2upx_t^10+k3r9_t^10+dhxh_t^3&hl.requireFieldMatch=true&name=/freetext&hl.fl=*&rows=100&class=solr.SearchHandler&lowercaseOperators=true&wt=javabin&version=2&command=update-requesthandler} status=400 QTime=7
2020-03-03 14:56:37.584 ERROR (qtp592617454-17) [   x:test_index] o.a.s.h.RequestHandlerBase org.apache.solr.common.SolrException: missing content stream
solr solrj solrcloud
1个回答
0
投票

检查以下代码是否适合您。

ModifiableSolrParams params = new ModifiableSolrParams();
params.set(CommonParams.WT, "json");
params.set(CommonParams.ROWS, 10);
params.set("hl", true);
params.set("hl.q", "pizza");
params.set("defType", "edismax");
params.set("hl.requireFieldMatch", true);

String url = "http://ip:8983/solr";
GenericSolrRequest request = new GenericSolrRequest(SolrRequest.METHOD.POST, "/select", params);
try (HttpSolrClient client = new HttpSolrClient.Builder(url).withConnectionTimeout(10000)
        .withSocketTimeout(60000).build()) {

SimpleSolrResponse response = request.process(client, "demo");
NamedList<Object> resp = response.getResponse();
}
© www.soinside.com 2019 - 2024. All rights reserved.