public static void main(String[] args) throws Exception { SolrServer server = new HttpSolrServer("http://localhost:8080/solr/db"); //SolrServer server = new CommonsHttpSolrServer( "http://localhost:8080/solr/db" ); SolrQuery params = new SolrQuery(); params.set("q", "nickname:baoyou"); params.set("start", 0); params.set("rows", Integer.MAX_VALUE); params.set("sort", "userid asc"); params.set("fl", "*,score"); QueryResponse response = null; SolrDocumentList list = null; try { response = server.query(params); } catch (SolrServerException e) { e.printStackTrace(); } if(response!=null){ System.out.println("Search Results: "); list = response.getResults(); System.out.println(list.size()); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } JSONArray jsonArray = new JSONArray(); for (Iterator<SolrDocument> it = list.iterator(); it.hasNext(); ) { SolrDocument document = it.next(); JSONObject jsonObject = new JSONObject(); for(Iterator<Entry<String, Object>> it2 = document.iterator(); it2.hasNext();) { Entry<String, Object> entry = it2.next(); try { jsonObject.put(entry.getKey(), entry.getValue()); } catch (JSONException e) { throw new Exception("can not convert solr data to json", e); } } jsonArray.put(jsonObject); } System.out.println(jsonArray.toString()); }
- 获取solrserver的实例
- SolrServer server = getSolrServer();
- 构造 SolrQuery
- SolrQuery query = new SolrQuery();
- query.setQuery( "*:*" );
- query.addSortField( "price", SolrQuery.ORDER.asc );
- 向服务器发出查询请求
- QueryResponse rsp = server.query( query );
- 获取结果。
- SolrDocumentList docs = rsp.getResults();
- 想要以javabean的方式获取结果,那么这个javabean必须像之前的例子一样有java注释。
- List<Item> beans = rsp.getBeans(Item.class);
高级用法
solrJ 提供了一组API,来帮助我们创建查询,下面是一个faceted query的例子。
- SolrServer server = getSolrServer();
- SolrQuery solrQuery = new SolrQuery().
- setQuery("ipod").
- setFacet(true).
- setFacetMinCount(1).
- setFacetLimit(8).
- addFacetField("category").
- addFacetField("inStock");
- QueryResponse rsp = server.query(solrQuery);
所有的 setter/add 方法都是返回它自己本身的实例,所以就像你所看到的一样,上面的用法是链式的
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!