无法更新自定义搜索组件中的请求参数

Cannot update request parameters in custom Search Component

我已经按照描述编写了 Solr 自定义搜索组件 here

我的目标是更新查询参数,特别是在管道中尽早删除 Unicode 引号。

但是截取请求并修改参数后,请求似乎没有更新。

public void updateSolrRequest(SolrQueryRequest req) {
  SolrParams params = req.getParams();
  System.out.println( "params = " +  req.getParamString());
  String newQuery = params.get(CommonParams.Q);
  newQuery = newQuery.toString().replaceAll("[A]","XXX");
  ModifiableSolrParams newParams = new ModifiableSolrParams(params);
  newParams.remove(CommonParams.Q);
  newParams.add(CommonParams.Q, newQuery);

  // all good to here, the next line should 
  // overwrite the old params with the new ones
  // but it does not
  req.setParams(newParams);
  System.out.println("newQuery = " + newQuery);
  System.out.println("newParams = " + newParams.get(CommonParams.Q));
  System.out.println("updated req = " + req.getParamString());
}

输出

params = q=“A+Game+of+Thrones“&defType=dismax&q.alt=thrones&fq=Game&_=1548262845155
newQuery = “XXX Game of Thrones“
newParams = “XXX Game of Thrones“
updated req = q=“A+Game+of+Thrones“&defType=dismax&q.alt=thrones&fq=Game&_=1548262845155

这里的问题是,

public String getParamString() {
    return origParams.toString();
}

实际上返回的是原始参数,这些参数不受 setParams 调用

的影响
  /** Change the parameters for this request.  This does not affect
   *  the original parameters returned by getOriginalParams()
   */
  void setParams(SolrParams params);

您应该使用 org.apache.solr.request.SolrQueryRequest#getParams 检查更新后的参数。