Solr/Lucene分佈式搜索,Solr Integrate katta step4

作好了上面幾個步驟.咱們能夠加入測試,測試代碼: 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.
相關文章
相關標籤/搜索