solr 测试
public static void main(String[] args) throwsException {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 newException("can not convert solr data to json", e);
}
}
jsonArray.put(jsonObject);
}
System.out.println(jsonArray.toString());
}
[*]
获取solrserver的实例
Java代码
[*]SolrServer server = getSolrServer();
[*] 构造 SolrQuery
Java代码
[*]SolrQuery query = new SolrQuery();
[*]query.setQuery( "*:*" );
[*]query.addSortField( "price", SolrQuery.ORDER.asc );
[*] 向服务器发出查询请求
Java代码
[*]QueryResponse rsp = server.query( query );
[*] 获取结果。
Java代码
[*]SolrDocumentList docs = rsp.getResults();
[*] 想要以javabean的方式获取结果,那么这个javabean必须像之前的例子一样有java注释。
Java代码
[*]List<Item> beans = rsp.getBeans(Item.class);
高级用法
solrJ 提供了一组API,来帮助我们创建查询,下面是一个faceted query的例子。
Java代码
[*]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 方法都是返回它自己本身的实例,所以就像你所看到的一样,上面的用法是链式的
页:
[1]