首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在body中传递Json字符串以使用Solrj查询solr

在body中传递Json字符串以使用Solrj查询solr
EN

Stack Overflow用户
提问于 2015-12-22 06:18:57
回答 1查看 1.6K关注 0票数 0

我使用httpclient从java代码中查询solr服务器。现在,我只想使用solrj库来转换我所有的代码。我找不到合适的文件。我现有的代码如下

代码语言:javascript
复制
HttpURLConnection conn = (HttpURLConnection) new URL(url.toString()).openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "*/*");
conn.setInstanceFollowRedirects(false);
OutputStream os = conn.getOutputStream();
os.write(inputJson.getBytes());
os.flush();
os.close();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
//read resp from rd

如何使用solrj来做同样的事情?下面是使用curl JSON请求API进行相同操作的文档

我想发送inputJson字符串作为请求体。这个Json字符串可能包含任何动态键值。正如我使用http调用所显示的那样,它是可行的。但是如何使用solrj来做同样的事情呢?

EN

回答 1

Stack Overflow用户

发布于 2015-12-22 06:27:26

下面是一个通过SolrJ进行的简单查询示例

代码语言:javascript
复制
package eric.search.solr.solrj;

import java.io.IOException;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;

/**
 * SolrJ test - solr5
 * 
 * @author eric
 * @date Aug 7, 2015 3:56:08 PM
 */
public class Solrj5Test {
    // query via edismax - test
    public static void queryEdismaxTest() {
        String coreUrl = "http://localhost:8983/solr/search_cn";
        SolrClient client;
        try {
            // create client
            client = new HttpSolrClient(coreUrl);

            // create query,
            SolrQuery query = new SolrQuery();

            query.setQuery("java"); // q
            query.addFilterQuery("authors:布鲁斯"); // fq
            // query.setFields("id", "cn_name", "en_name", "authors"); // fl
            query.setStart(0); // start
            query.setRows(10); // rows
            query.set("defType", "edismax"); // defType
            query.set("qf", "cn_name"); // qf

            // get response
            QueryResponse response = client.query(query);

            // get documents
            SolrDocumentList docList = response.getResults();

            System.out.printf("doc count: %d\n", docList.size());
            client.close();
        } catch (SolrServerException | IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        queryEdismaxTest();
    }
}

如果您想以json的形式获得原始输出,SolrJ会将结果包装到Java对象中。然后建议您使用像HttpClient这样的工具通过solr的url检索结果,然后通过Jackson将结果解析为json JsonNode

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34409604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档