使用特定属性值从solr获取文档

时间:2017-05-05 05:48:19

标签: java solr solrj

我是solr的新手。我正在使用有数据的solr。现在我想通过搜索solr来获取特定文档的数据。我有一个属性值,我想在solr中搜索。我是通过java这样做的。我已尝试过网络上的所有解决方案,但没有工作。

public void searchQuery(String valuetobesearched) throws UnsupportedEncodingException {
        server = new SolarConnectionClass().getSolrInstance("URL of my solr");
        SolrQuery sQueryParams = new SolrQuery();
        //String queryString = "*:*";
        sQueryParams.setQuery("name:"+URLEncoder.encode(valuetobesearched));

        //sQueryParams.addFilterQuery("name:"+URLEncoder.encode(valuetobesearched));
        /*sQueryParams.setStart(0);
        sQueryParams.setRows(5000);*/
        //sQueryParams.set("defType", "edismax");
        //sQueryParams.set
        QueryResponse response = null;
        try {
            System.out.println(sQueryParams);
            response = server.query(sQueryParams);
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        SolrDocumentList results = response.getResults();
        System.out.println(results.size());

        /*if(results.size() > 0) {
            for (int i = 0; i < results.size(); ++i) {
                SolrDocument sortedDocument = results.get(0);
                System.out.println(sortedDocument.getFieldValue("PQR"));
            }
        }
*/

    }

怎么做呢?

1 个答案:

答案 0 :(得分:0)

使用SolrQuery课程时,您没有编码参数。

只需以这种方式设置查询,客户端就会透明地执行&#34;脏&#34;作业:

sQueryParams.setQuery("name:" + valuetobesearched);

同样,您可以使用以下方法查看找到的结果总数:

response.getResults().getNumFound()

response.getResults()的大小取决于setRows参数(评论中的帖子)。

为了理解Solr查询的工作原理,我建议您使用浏览器进行测试,然后将这些请求转换为SolrJ。

例如,帖子中的网址是:

http://localhost:8983/solr/collection1/select?q=name:hello