做好了上面几个步骤.我们可以加入测试,测试代码: package net.dkatta;import java.util.Iterator;import java.util.Map;impor
做好了上面几个步骤.我们可以加入测试,测试代码:
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@5d40f8c310-18 14:44:21 [INFO 级别][ zookeeper.ClientCnxn ]类 (1058 行) Opening socket connection to server localhost/127.0.0.1:218110-18 14:44:21 [INFO 级别][ zookeeper.ClientCnxn ]类 (947 行) Socket connection established to localhost/127.0.0.1:2181, initiating session10-18 14:44:21 [INFO 级别][ zookeeper.ClientCnxn ]类 (736 行) Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x13a7236897c0009, negotiated timeout = 1000010-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=standardClientResult: 1 results, 0 errors, 1/1 shards (closed) (complete)========================falseorg.apache.solr.client.solrj.response.SolrResponseBase共搜索到: 2Key: sid Value: 7039ce44-20bc-41d4-8278-2377654b3f35Key: title Value: facet.fieldKey: content Value: This param allows you to specify a field which should be treated as a facetKey: score Value: 0.9991327----------------------------------------------Key: sid Value: 832c11d4-e1c1-453d-8a56-a9726d8e3b44Key: title Value: facet.fieldKey: content Value: This param allows you to specify a field which should be treated as a facetKey: 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.