作好了上面幾個步驟.咱們能夠加入測試,測試代碼: java
package net.dkatta; import java.util.Iterator; import java.util.Map; import net.sf.katta.client.ClientResult; import net.sf.katta.util.KattaException; import net.sf.katta.util.ZkConfiguration; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrResponse; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.katta.KattaClient; import org.apache.solr.katta.KattaRequest; import org.apache.solr.katta.KattaResponse; /** * <pre> * Created by IntelliJ IDEA. * User: zhenqin * Date: 12-10-12 * Time: 上午11:45 * To change this template use File | Settings | File Templates. * * </pre> * * @author zhenqin */ public class ClientMain { public static void main(String[] args) throws KattaException { KattaClient kattaClient = new KattaClient(new ZkConfiguration()); // Client client = new Client(SolrKattaServer.class); SolrQuery query = new SolrQuery(); String word = "facet"; query.setQuery("content:facet"); query.setParam("fl", "title, content, score"); // query.addFilterQuery("content:(" + word + ")"); query.setRows(10);//設置返回結果條數,若是你時分組查詢,你就設置爲0 query.setSortField("score", SolrQuery.ORDER.desc);//分組排序字段 query.add(CommonParams.QT, "standard"); System.out.println(query.toString()); QueryResponse queryResponse = null; SolrResponse solrResponse = null; KattaRequest request = new KattaRequest(query); try { ClientResult<KattaResponse> res = kattaClient.request(10 * 1000L, new String[]{"*"}, request); System.out.println(res); java.util.Collection<KattaResponse> ls = res.getResults(); KattaResponse kr = ls.iterator().next(); SolrResponse response = kr.getRsp(); if(response instanceof QueryResponse) { queryResponse = (QueryResponse)response; System.out.println("========================true"); } else { System.out.println("========================false" + response.getClass().getName()); queryResponse = new QueryResponse(); queryResponse.setResponse(response.getResponse()); } System.out.println("共搜索到: " + queryResponse.getResults().size()); SolrDocumentList docs = queryResponse.getResults(); for (SolrDocument doc : docs) { for (Iterator<Map.Entry<String, Object>> iter = doc.iterator(); iter.hasNext();) { Map.Entry<String, Object> entry = iter.next(); System.out.print("Key: " + entry.getKey() + " "); System.out.println("Value: " + entry.getValue()); } System.out.println("----------------------------------------------"); } } catch(Exception e) { e.printStackTrace(); } } }執行後ClientMain輸出:
10-18 14:44:21 [INFO 級別][ zookeeper.ZooKeeper ]類 (379 行) Initiating client connection, connectString=localhost:2181 sessionTimeout=5000 watcher=org.I0Itec.zkclient.ZkClient@5d40f8c3 10-18 14:44:21 [INFO 級別][ zookeeper.ClientCnxn ]類 (1058 行) Opening socket connection to server localhost/127.0.0.1:2181 10-18 14:44:21 [INFO 級別][ zookeeper.ClientCnxn ]類 (947 行) Socket connection established to localhost/127.0.0.1:2181, initiating session 10-18 14:44:21 [INFO 級別][ zookeeper.ClientCnxn ]類 (736 行) Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x13a7236897c0009, negotiated timeout = 10000 10-18 14:44:21 [INFO 級別][ zkclient.ZkClient ]類 (449 行) zookeeper state changed (SyncConnected) 10-18 14:44:21 [INFO 級別][ client.Client ]類 (143 行) indices=[solrhome1] q=content%3Afacet&fl=title%2C+content%2C+score&rows=10&sort=score+desc&qt=standard ClientResult: 1 results, 0 errors, 1/1 shards (closed) (complete) ========================falseorg.apache.solr.client.solrj.response.SolrResponseBase 共搜索到: 2 Key: sid Value: 7039ce44-20bc-41d4-8278-2377654b3f35 Key: title Value: facet.field Key: content Value: This param allows you to specify a field which should be treated as a facet Key: score Value: 0.9991327 ---------------------------------------------- Key: sid Value: 832c11d4-e1c1-453d-8a56-a9726d8e3b44 Key: title Value: facet.field Key: content Value: This param allows you to specify a field which should be treated as a facet Key: score Value: 0.9991327 ----------------------------------------------同時,step3中啓動的Node和Shard同時搜了2遍.日誌:
10-18 14:44:22 [INFO 級別][ core.SolrCore ]類 (1386 行) [solrhome1#proxy] webapp=null path=/select params={rows=10&sort=score+desc&fl=sid%2Cscore&q=content%3Afacet&start=0&fsv=true&isShard=true} hits=2 status=0 QTime=20 10-18 14:44:22 [INFO 級別][ core.SolrCore ]類 (1386 行) [solrhome1#proxy] webapp=null path=/select params={rows=10&fl=title%2C+content%2C+score%2Csid&q=content%3Afacet&ids=7039ce44-20bc-41d4-8278-2377654b3f35%2C832c11d4-e1c1-453d-8a56-a9726d8e3b44&isShard=true} status=0 QTime=4固然若是在step3中加入2個shard,它會搜索這2個shard的索引.當同時加入更多的Node,則使用*搜索全部的Node,solrhome1只搜索一個Node.