py_sample.py 2.0 KB
Newer Older
G
groot 已提交
1 2 3
import time
import struct

G
groot 已提交
4
from megasearch import VecService
G
groot 已提交
5

G
groot 已提交
6
#Note: pip install thrift
G
groot 已提交
7 8 9 10
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol, TCompactProtocol, TJSONProtocol

G
groot 已提交
11
def test_megasearch():
G
groot 已提交
12 13 14 15 16 17 18 19
    try:
        #connect
        transport = TSocket.TSocket('localhost', 33001)
        transport = TTransport.TBufferedTransport(transport)
        protocol = TJSONProtocol.TJSONProtocol(transport)
        client = VecService.Client(protocol)
        transport.open()

G
groot 已提交
20
        print("connected");
G
groot 已提交
21 22

        #add group
G
groot 已提交
23
        group = VecService.VecGroup("test_" + time.strftime('%H%M%S'), 256)
G
groot 已提交
24 25
        client.add_group(group)

G
groot 已提交
26
        print("group added");
G
groot 已提交
27 28 29 30 31 32 33 34 35 36 37 38 39 40

        # build binary vectors
        bin_vec_list = VecService.VecBinaryTensorList([])
        for i in range(10000):
            a=[]
            for k in range(group.dimension):
                a.append(i + k)
            bin_vec = VecService.VecBinaryTensor("binary_" + str(i), bytes())
            bin_vec.tensor = struct.pack(str(group.dimension)+"d", *a)
            bin_vec_list.tensor_list.append(bin_vec)

        # add vectors
        client.add_binary_vector_batch(group.id, bin_vec_list)

G
groot 已提交
41 42 43
        wait_storage = 5
        print("wait {} seconds for persisting data".format(wait_storage))
        time.sleep(wait_storage)
G
groot 已提交
44 45 46 47 48 49 50 51 52

        # search vector
        a = []
        for k in range(group.dimension):
            a.append(300 + k)
        bin_vec = VecService.VecBinaryTensor("binary_search", bytes())
        bin_vec.tensor = struct.pack(str(group.dimension) + "d", *a)
        filter = VecService.VecSearchFilter()
        res = VecService.VecSearchResult()
G
groot 已提交
53 54

        print("begin search ...");
G
groot 已提交
55 56 57 58 59 60 61
        res = client.search_binary_vector(group.id, 5, bin_vec, filter)

        print('result count: ' + str(len(res.result_list)))
        for item in res.result_list:
            print(item.uid)

        transport.close()
G
groot 已提交
62
        print("disconnected");
G
groot 已提交
63

G
groot 已提交
64 65
    except VecService.VecException as ex:
        print(ex.reason)
G
groot 已提交
66 67


G
groot 已提交
68
test_megasearch()