com.flaptor.indextank.rpc.IndexerClient.java Source code

Java tutorial

Introduction

Here is the source code for com.flaptor.indextank.rpc.IndexerClient.java

Source

/*
 * Copyright (c) 2011 LinkedIn, Inc
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.flaptor.indextank.rpc;

import java.util.Map;
import java.util.Map.Entry;

import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransportException;

import com.google.common.collect.Maps;

public class IndexerClient implements com.flaptor.indextank.BoostingIndexer {
    private final String host;
    private final int port;

    public IndexerClient(String host, int port) {
        this.host = host;
        this.port = port;
    }

    @Override
    public void promoteResult(String docid, String query) {
        TSocket transport = new TSocket(host, port);
        TProtocol protocol = new TBinaryProtocol(transport);
        Indexer.Client client = new Indexer.Client(protocol);

        try {
            transport.open();
            client.promoteResult(docid, query);
            transport.close();
        } catch (IndextankException e) {
            throw new RuntimeException(e);
        } catch (TTransportException e) {
            throw new RuntimeException(e);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void add(String docId, com.flaptor.indextank.index.Document document, int timestampBoost,
            Map<Integer, Double> dynamicBoosts) {
        TSocket transport = new TSocket(host, port);
        TProtocol protocol = new TBinaryProtocol(transport);
        Indexer.Client client = new Indexer.Client(protocol);

        try {
            transport.open();
            client.addDoc(docId, new Document(document.asMap()), timestampBoost, dynamicBoosts);
            transport.close();
        } catch (IndextankException e) {
            throw new RuntimeException(e);
        } catch (TTransportException e) {
            throw new RuntimeException(e);
        } catch (TException e) {
            throw new RuntimeException(e);
        }

    }

    @Override
    public void dump() {
        TSocket transport = new TSocket(host, port);
        TProtocol protocol = new TBinaryProtocol(transport);
        Indexer.Client client = new Indexer.Client(protocol);

        try {
            transport.open();
            client.dump();
            transport.close();
        } catch (IndextankException e) {
            throw new RuntimeException(e);
        } catch (TTransportException e) {
            throw new RuntimeException(e);
        } catch (TException e) {
            throw new RuntimeException(e);
        }

    }

    @Override
    public void updateBoosts(String docId, Map<Integer, Double> updatedBoosts) {
        TSocket transport = new TSocket(host, port);
        TProtocol protocol = new TBinaryProtocol(transport);
        Indexer.Client client = new Indexer.Client(protocol);

        try {
            transport.open();
            client.updateBoost(docId, updatedBoosts);
            transport.close();
        } catch (IndextankException e) {
            throw new RuntimeException(e);
        } catch (TTransportException e) {
            throw new RuntimeException(e);
        } catch (TException e) {
            throw new RuntimeException(e);
        }

    }

    @Override
    public void updateCategories(String docId, Map<String, String> categories) {
        TSocket transport = new TSocket(host, port);
        TProtocol protocol = new TBinaryProtocol(transport);
        Indexer.Client client = new Indexer.Client(protocol);

        try {
            transport.open();
            client.updateCategories(docId, categories);
            transport.close();
        } catch (IndextankException e) {
            throw new RuntimeException(e);
        } catch (TTransportException e) {
            throw new RuntimeException(e);
        } catch (TException e) {
            throw new RuntimeException(e);
        }

    }

    @Override
    public void updateTimestamp(String docId, int timestampBoost) {
        TSocket transport = new TSocket(host, port);
        TProtocol protocol = new TBinaryProtocol(transport);
        Indexer.Client client = new Indexer.Client(protocol);

        try {
            transport.open();
            client.updateTimestampBoost(docId, timestampBoost);
            transport.close();
        } catch (IndextankException e) {
            throw new RuntimeException(e);
        } catch (TTransportException e) {
            throw new RuntimeException(e);
        } catch (TException e) {
            throw new RuntimeException(e);
        }

    }

    @Override
    public void del(String docid) {
        TSocket transport = new TSocket(host, port);
        TProtocol protocol = new TBinaryProtocol(transport);
        Indexer.Client client = new Indexer.Client(protocol);

        try {
            transport.open();
            client.delDoc(docid);
            transport.close();
        } catch (IndextankException e) {
            throw new RuntimeException(e);
        } catch (TTransportException e) {
            throw new RuntimeException(e);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void addScoreFunction(int functionIndex, String definition) {
        TSocket transport = new TSocket(host, port);
        TProtocol protocol = new TBinaryProtocol(transport);
        Indexer.Client client = new Indexer.Client(protocol);

        try {
            transport.open();
            client.addScoreFunction(functionIndex, definition);
            transport.close();
        } catch (IndextankException e) {
            throw new RuntimeException(e);
        } catch (TTransportException e) {
            throw new RuntimeException(e);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void removeScoreFunction(int functionIndex) {
        TSocket transport = new TSocket(host, port);
        TProtocol protocol = new TBinaryProtocol(transport);
        Indexer.Client client = new Indexer.Client(protocol);

        try {
            transport.open();
            client.removeScoreFunction(functionIndex);
            transport.close();
        } catch (IndextankException e) {
            throw new RuntimeException(e);
        } catch (TTransportException e) {
            throw new RuntimeException(e);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public Map<Integer, String> listScoreFunctions() {
        TSocket transport = new TSocket(host, port);
        TProtocol protocol = new TBinaryProtocol(transport);
        Indexer.Client client = new Indexer.Client(protocol);

        try {
            transport.open();
            Map<Integer, String> retValue = client.listScoreFunctions();
            transport.close();
            return retValue;
        } catch (IndextankException e) {
            throw new RuntimeException(e);
        } catch (TTransportException e) {
            throw new RuntimeException(e);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public Map<String, String> getStats() {
        TSocket transport = new TSocket(host, port);
        TProtocol protocol = new TBinaryProtocol(transport);
        Indexer.Client client = new Indexer.Client(protocol);

        try {
            transport.open();
            Map<String, String> retValue = client.get_stats();
            transport.close();
            return retValue;
        } catch (IndextankException e) {
            throw new RuntimeException(e);
        } catch (TTransportException e) {
            throw new RuntimeException(e);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        IndexerClient client = new IndexerClient("localhost", 7911);

        Map<String, String> fields = Maps.newHashMap();
        fields.put("mono", "lete");
        fields.put("ignacio", "perez");
        fields.put("santi", "miente");
        fields.put("jorge", "grumpy");
        fields.put("spike", "sweet");

        String extra = "";
        if (args.length > 1) {
            fields.put(args[0], args[1]);
            extra = args[0] + " " + args[1];
        }

        fields.put("todo", "mono lete ignacio perez santi miente jorge grumpy spike y sweet " + extra);
        com.flaptor.indextank.index.Document doc = new com.flaptor.indextank.index.Document(fields);
        client.add("prueba", doc, (int) (System.currentTimeMillis() / 1000), Maps.<Integer, Double>newHashMap());
    }

}