Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SolrJ修改Solr响应_Java_Solr - Fatal编程技术网

Java 使用SolrJ修改Solr响应

Java 使用SolrJ修改Solr响应,java,solr,Java,Solr,我正在使用SolrJ客户端调用Solr服务,是否有任何方法可以修改我从Solr获得的响应,比如在响应文档中添加一个新字段 QueryResponse rsp = null; if (server != null) { try { rsp = server.query(solrParams); } catch (Exception e) { e.getMessage(); } } 如

我正在使用SolrJ客户端调用Solr服务,是否有任何方法可以修改我从Solr获得的响应,比如在响应文档中添加一个新字段

QueryResponse rsp = null;
    if (server != null) {
        try {
            rsp = server.query(solrParams);

        } catch (Exception e) {
            e.getMessage();
        }
    }
如果我的回答如下

    {
  "responseHeader":{
"status":400,
"QTime":15,
"params":{
  "q":"*:*",
  "indent":"true",
  "wt":"json",
  "group":"false"}},
  "response":{"numFound":1,"start":0,"docs":[
  {
    "Name":"Shirt",
    "inventory":"Nonn",
    "launchYear":2004,
    "Desc":"Men's Shirt",
    "ilnNumbers":"25326,25338,25341,29617,39267",}
    }}
我需要更改此响应以添加新字段

 {
  "responseHeader":{
"status":400,
"QTime":15,
"params":{
  "q":"*:*",
  "indent":"true",
  "wt":"json",
  "group":"false"}},
  "response":{"numFound":1,"start":0,"docs":[
  {
    "Name":"Shirt",
    "inventory":"Nonn",
    "launchYear":2004,
    "myCustomField":"Test",
    "Desc":"Men's Shirt",
    "ilnNumbers":"25326,25338,25341,29617,39267",}
    }}

这可能吗?

为您的模式定义一个POJO类以及getter和setter

class POJO {
  @Field
  private String name;
  @Field
  private Integer inventory;
  @Field
  private Integer launchYear;
  @Field
  private String desc;
  @Field
  private String ilnNumbersl;

  private String myCustomField;

  public POJO(String name, Integer inventory, Integer launchYear, String desc, String ilnNumbersl) {
    this.name = name;
    this.inventory = inventory;
    this.launchYear = launchYear;
    this.desc = desc;
    this.ilnNumbersl = ilnNumbersl;
  }

  //getters and setters for each instance member.
}
现在将solr响应转换为List,并将所需的自定义字段添加到查询返回的每个结果中

  QueryResponse rsp = null;
   if (server != null) {
     try {
       rsp = server.query(solrParams);
       List<POJO> list = rsp.getBeans(POJO.class); // convert to list of POJO instance
       // now add the custom field for each
     } catch (Exception e) {
       e.getMessage();
     }
   }
QueryResponse rsp=null;
如果(服务器!=null){
试一试{
rsp=server.query(solrParams);
List List=rsp.getBeans(POJO.class);//转换为POJO实例的列表
//现在为每个字段添加自定义字段
}捕获(例外e){
e、 getMessage();
}
}
尝试使用Solr文档。这将帮助您解决问题

    <queryResponseWriter name="json" class="solr.JSONResponseWriter">
      <!-- For the purposes of the tutorial, JSON response are written as
      plain text so that it's easy to read in *any* browser.
      If you are building applications that consume JSON, just remove
      this override to get the default "application/json" mime type.
      -->
    <str name="content-type">text/plain</str>
    </queryResponseWriter>

文本/纯文本

这将为您提供文本格式的queryResponce。根据您的使用情况修改响应。

如果可能,添加带有链接的示例,以提高回答质量