mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-06 17:18:35 +08:00
[skip ci]Fix single quoted docstring (#9251)
Signed-off-by: zhuwenxing <wenxing.zhu@zilliz.com>
This commit is contained in:
parent
9c24e876d7
commit
25c364b03d
@ -1898,9 +1898,9 @@ class TestCollectionSearch(TestcaseBase):
|
|||||||
|
|
||||||
|
|
||||||
def init_data(connect, collection, nb=3000, partition_names=None, auto_id=True):
|
def init_data(connect, collection, nb=3000, partition_names=None, auto_id=True):
|
||||||
'''
|
"""
|
||||||
Generate entities and add it in collection
|
Generate entities and add it in collection
|
||||||
'''
|
"""
|
||||||
global entities
|
global entities
|
||||||
if nb == 3000:
|
if nb == 3000:
|
||||||
insert_entities = entities
|
insert_entities = entities
|
||||||
@ -1916,9 +1916,9 @@ def init_data(connect, collection, nb=3000, partition_names=None, auto_id=True):
|
|||||||
|
|
||||||
|
|
||||||
def init_binary_data(connect, collection, nb=3000, insert=True, partition_names=None):
|
def init_binary_data(connect, collection, nb=3000, insert=True, partition_names=None):
|
||||||
'''
|
"""
|
||||||
Generate entities and add it in collection
|
Generate entities and add it in collection
|
||||||
'''
|
"""
|
||||||
ids = []
|
ids = []
|
||||||
global binary_entities
|
global binary_entities
|
||||||
global raw_vectors
|
global raw_vectors
|
||||||
@ -2023,11 +2023,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_flat_top_k(self, connect, collection, get_nq):
|
def test_search_flat_top_k(self, connect, collection, get_nq):
|
||||||
'''
|
"""
|
||||||
target: test basic search function, all the search params is correct, change top-k value
|
target: test basic search function, all the search params is correct, change top-k value
|
||||||
method: search with the given vectors, check the result
|
method: search with the given vectors, check the result
|
||||||
expected: the length of the result is top_k
|
expected: the length of the result is top_k
|
||||||
'''
|
"""
|
||||||
top_k = 16385 # max top k is 16384
|
top_k = 16385 # max top k is 16384
|
||||||
nq = get_nq
|
nq = get_nq
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
@ -2044,11 +2044,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.skip("r0.3-test")
|
@pytest.mark.skip("r0.3-test")
|
||||||
def _test_search_field(self, connect, collection, get_top_k, get_nq):
|
def _test_search_field(self, connect, collection, get_top_k, get_nq):
|
||||||
'''
|
"""
|
||||||
target: test basic search function, all the search params is correct, change top-k value
|
target: test basic search function, all the search params is correct, change top-k value
|
||||||
method: search with the given vectors, check the result
|
method: search with the given vectors, check the result
|
||||||
expected: the length of the result is top_k
|
expected: the length of the result is top_k
|
||||||
'''
|
"""
|
||||||
top_k = get_top_k
|
top_k = get_top_k
|
||||||
nq = get_nq
|
nq = get_nq
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
@ -2067,13 +2067,13 @@ class TestSearchBase:
|
|||||||
connect.search(collection, query)
|
connect.search(collection, query)
|
||||||
|
|
||||||
def _test_search_after_delete(self, connect, collection, get_top_k, get_nq):
|
def _test_search_after_delete(self, connect, collection, get_top_k, get_nq):
|
||||||
'''
|
"""
|
||||||
target: test basic search function before and after deletion, all the search params is
|
target: test basic search function before and after deletion, all the search params is
|
||||||
correct, change top-k value.
|
correct, change top-k value.
|
||||||
check issue <a href="https://github.com/milvus-io/milvus/issues/4200">#4200</a>
|
check issue <a href="https://github.com/milvus-io/milvus/issues/4200">#4200</a>
|
||||||
method: search with the given vectors, check the result
|
method: search with the given vectors, check the result
|
||||||
expected: the deleted entities do not exist in the result.
|
expected: the deleted entities do not exist in the result.
|
||||||
'''
|
"""
|
||||||
top_k = get_top_k
|
top_k = get_top_k
|
||||||
nq = get_nq
|
nq = get_nq
|
||||||
|
|
||||||
@ -2114,11 +2114,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_index_empty_partition(self, connect, collection, get_simple_index, get_top_k, get_nq):
|
def test_search_index_empty_partition(self, connect, collection, get_simple_index, get_top_k, get_nq):
|
||||||
'''
|
"""
|
||||||
target: test basic search function, all the search params is correct, test all index params, and build
|
target: test basic search function, all the search params is correct, test all index params, and build
|
||||||
method: add vectors into collection, search with the given vectors, check the result
|
method: add vectors into collection, search with the given vectors, check the result
|
||||||
expected: the length of the result is top_k, search collection with partition tag return empty
|
expected: the length of the result is top_k, search collection with partition tag return empty
|
||||||
'''
|
"""
|
||||||
top_k = get_top_k
|
top_k = get_top_k
|
||||||
nq = get_nq
|
nq = get_nq
|
||||||
|
|
||||||
@ -2147,11 +2147,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_index_partitions(self, connect, collection, get_simple_index, get_top_k):
|
def test_search_index_partitions(self, connect, collection, get_simple_index, get_top_k):
|
||||||
'''
|
"""
|
||||||
target: test basic search function, all the search params is correct, test all index params, and build
|
target: test basic search function, all the search params is correct, test all index params, and build
|
||||||
method: search collection with the given vectors and tags, check the result
|
method: search collection with the given vectors and tags, check the result
|
||||||
expected: the length of the result is top_k
|
expected: the length of the result is top_k
|
||||||
'''
|
"""
|
||||||
top_k = get_top_k
|
top_k = get_top_k
|
||||||
nq = 2
|
nq = 2
|
||||||
new_tag = "new_tag"
|
new_tag = "new_tag"
|
||||||
@ -2182,11 +2182,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_ip_flat(self, connect, collection, get_simple_index, get_top_k, get_nq):
|
def test_search_ip_flat(self, connect, collection, get_simple_index, get_top_k, get_nq):
|
||||||
'''
|
"""
|
||||||
target: test basic search function, all the search params is correct, change top-k value
|
target: test basic search function, all the search params is correct, change top-k value
|
||||||
method: search with the given vectors, check the result
|
method: search with the given vectors, check the result
|
||||||
expected: the length of the result is top_k
|
expected: the length of the result is top_k
|
||||||
'''
|
"""
|
||||||
top_k = get_top_k
|
top_k = get_top_k
|
||||||
nq = get_nq
|
nq = get_nq
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
@ -2199,11 +2199,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_ip_after_index(self, connect, collection, get_simple_index, get_top_k, get_nq):
|
def test_search_ip_after_index(self, connect, collection, get_simple_index, get_top_k, get_nq):
|
||||||
'''
|
"""
|
||||||
target: test basic search function, all the search params is correct, test all index params, and build
|
target: test basic search function, all the search params is correct, test all index params, and build
|
||||||
method: search with the given vectors, check the result
|
method: search with the given vectors, check the result
|
||||||
expected: the length of the result is top_k
|
expected: the length of the result is top_k
|
||||||
'''
|
"""
|
||||||
top_k = get_top_k
|
top_k = get_top_k
|
||||||
nq = get_nq
|
nq = get_nq
|
||||||
|
|
||||||
@ -2224,11 +2224,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_ip_index_empty_partition(self, connect, collection, get_simple_index, get_top_k, get_nq):
|
def test_search_ip_index_empty_partition(self, connect, collection, get_simple_index, get_top_k, get_nq):
|
||||||
'''
|
"""
|
||||||
target: test basic search function, all the search params is correct, test all index params, and build
|
target: test basic search function, all the search params is correct, test all index params, and build
|
||||||
method: add vectors into collection, search with the given vectors, check the result
|
method: add vectors into collection, search with the given vectors, check the result
|
||||||
expected: the length of the result is top_k, search collection with partition tag return empty
|
expected: the length of the result is top_k, search collection with partition tag return empty
|
||||||
'''
|
"""
|
||||||
top_k = get_top_k
|
top_k = get_top_k
|
||||||
nq = get_nq
|
nq = get_nq
|
||||||
metric_type = "IP"
|
metric_type = "IP"
|
||||||
@ -2257,11 +2257,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_ip_index_partitions(self, connect, collection, get_simple_index, get_top_k):
|
def test_search_ip_index_partitions(self, connect, collection, get_simple_index, get_top_k):
|
||||||
'''
|
"""
|
||||||
target: test basic search function, all the search params is correct, test all index params, and build
|
target: test basic search function, all the search params is correct, test all index params, and build
|
||||||
method: search collection with the given vectors and tags, check the result
|
method: search collection with the given vectors and tags, check the result
|
||||||
expected: the length of the result is top_k
|
expected: the length of the result is top_k
|
||||||
'''
|
"""
|
||||||
top_k = get_top_k
|
top_k = get_top_k
|
||||||
nq = 2
|
nq = 2
|
||||||
metric_type = "IP"
|
metric_type = "IP"
|
||||||
@ -2290,32 +2290,32 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_without_connect(self, dis_connect, collection):
|
def test_search_without_connect(self, dis_connect, collection):
|
||||||
'''
|
"""
|
||||||
target: test search vectors without connection
|
target: test search vectors without connection
|
||||||
method: use dis connected instance, call search method and check if search successfully
|
method: use dis connected instance, call search method and check if search successfully
|
||||||
expected: raise exception
|
expected: raise exception
|
||||||
'''
|
"""
|
||||||
with pytest.raises(Exception) as e:
|
with pytest.raises(Exception) as e:
|
||||||
res = dis_connect.search(collection, default_query)
|
res = dis_connect.search(collection, default_query)
|
||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_collection_not_existed(self, connect):
|
def test_search_collection_not_existed(self, connect):
|
||||||
'''
|
"""
|
||||||
target: search collection not existed
|
target: search collection not existed
|
||||||
method: search with the random collection_name, which is not in db
|
method: search with the random collection_name, which is not in db
|
||||||
expected: status not ok
|
expected: status not ok
|
||||||
'''
|
"""
|
||||||
collection_name = gen_unique_str(uid)
|
collection_name = gen_unique_str(uid)
|
||||||
with pytest.raises(Exception) as e:
|
with pytest.raises(Exception) as e:
|
||||||
res = connect.search(collection_name, default_query)
|
res = connect.search(collection_name, default_query)
|
||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L0)
|
@pytest.mark.tags(CaseLabel.L0)
|
||||||
def test_search_distance_l2(self, connect, collection):
|
def test_search_distance_l2(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
target: search collection, and check the result: distance
|
target: search collection, and check the result: distance
|
||||||
method: compare the return distance value with value computed with Euclidean
|
method: compare the return distance value with value computed with Euclidean
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
nq = 2
|
nq = 2
|
||||||
search_param = {"nprobe": 1}
|
search_param = {"nprobe": 1}
|
||||||
entities, ids = init_data(connect, collection, nb=nq)
|
entities, ids = init_data(connect, collection, nb=nq)
|
||||||
@ -2331,11 +2331,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_distance_l2_after_index(self, connect, id_collection, get_simple_index):
|
def test_search_distance_l2_after_index(self, connect, id_collection, get_simple_index):
|
||||||
'''
|
"""
|
||||||
target: search collection, and check the result: distance
|
target: search collection, and check the result: distance
|
||||||
method: compare the return distance value with value computed with Inner product
|
method: compare the return distance value with value computed with Inner product
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
index_type = get_simple_index["index_type"]
|
index_type = get_simple_index["index_type"]
|
||||||
nq = 2
|
nq = 2
|
||||||
entities, ids = init_data(connect, id_collection, auto_id=False)
|
entities, ids = init_data(connect, id_collection, auto_id=False)
|
||||||
@ -2362,11 +2362,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_distance_ip(self, connect, collection):
|
def test_search_distance_ip(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
target: search collection, and check the result: distance
|
target: search collection, and check the result: distance
|
||||||
method: compare the return distance value with value computed with Inner product
|
method: compare the return distance value with value computed with Inner product
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
nq = 2
|
nq = 2
|
||||||
metirc_type = "IP"
|
metirc_type = "IP"
|
||||||
search_param = {"nprobe": 1}
|
search_param = {"nprobe": 1}
|
||||||
@ -2384,11 +2384,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_distance_ip_after_index(self, connect, id_collection, get_simple_index):
|
def test_search_distance_ip_after_index(self, connect, id_collection, get_simple_index):
|
||||||
'''
|
"""
|
||||||
target: search collection, and check the result: distance
|
target: search collection, and check the result: distance
|
||||||
method: compare the return distance value with value computed with Inner product
|
method: compare the return distance value with value computed with Inner product
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
index_type = get_simple_index["index_type"]
|
index_type = get_simple_index["index_type"]
|
||||||
nq = 2
|
nq = 2
|
||||||
metirc_type = "IP"
|
metirc_type = "IP"
|
||||||
@ -2418,11 +2418,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L0)
|
@pytest.mark.tags(CaseLabel.L0)
|
||||||
def test_search_distance_jaccard_flat_index(self, connect, binary_collection):
|
def test_search_distance_jaccard_flat_index(self, connect, binary_collection):
|
||||||
'''
|
"""
|
||||||
target: search binary_collection, and check the result: distance
|
target: search binary_collection, and check the result: distance
|
||||||
method: compare the return distance value with value computed with L2
|
method: compare the return distance value with value computed with L2
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
nq = 1
|
nq = 1
|
||||||
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
||||||
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
||||||
@ -2435,11 +2435,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_binary_flat_with_L2(self, connect, binary_collection):
|
def test_search_binary_flat_with_L2(self, connect, binary_collection):
|
||||||
'''
|
"""
|
||||||
target: search binary_collection, and check the result: distance
|
target: search binary_collection, and check the result: distance
|
||||||
method: compare the return distance value with value computed with L2
|
method: compare the return distance value with value computed with L2
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
nq = 1
|
nq = 1
|
||||||
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
||||||
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
||||||
@ -2449,11 +2449,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_distance_hamming_flat_index(self, connect, binary_collection):
|
def test_search_distance_hamming_flat_index(self, connect, binary_collection):
|
||||||
'''
|
"""
|
||||||
target: search binary_collection, and check the result: distance
|
target: search binary_collection, and check the result: distance
|
||||||
method: compare the return distance value with value computed with Inner product
|
method: compare the return distance value with value computed with Inner product
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
nq = 1
|
nq = 1
|
||||||
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
||||||
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
||||||
@ -2466,11 +2466,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_distance_substructure_flat_index(self, connect, binary_collection):
|
def test_search_distance_substructure_flat_index(self, connect, binary_collection):
|
||||||
'''
|
"""
|
||||||
target: search binary_collection, and check the result: distance
|
target: search binary_collection, and check the result: distance
|
||||||
method: search with new random binary entities and SUBSTRUCTURE metric type
|
method: search with new random binary entities and SUBSTRUCTURE metric type
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
nq = 1
|
nq = 1
|
||||||
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
||||||
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
||||||
@ -2484,11 +2484,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_distance_substructure_flat_index_B(self, connect, binary_collection):
|
def test_search_distance_substructure_flat_index_B(self, connect, binary_collection):
|
||||||
'''
|
"""
|
||||||
target: search binary_collection, and check the result: distance
|
target: search binary_collection, and check the result: distance
|
||||||
method: search with entities that related to inserted entities
|
method: search with entities that related to inserted entities
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
top_k = 3
|
top_k = 3
|
||||||
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
||||||
query_int_vectors, query_vecs = gen_binary_sub_vectors(int_vectors, 2)
|
query_int_vectors, query_vecs = gen_binary_sub_vectors(int_vectors, 2)
|
||||||
@ -2503,11 +2503,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_distance_superstructure_flat_index(self, connect, binary_collection):
|
def test_search_distance_superstructure_flat_index(self, connect, binary_collection):
|
||||||
'''
|
"""
|
||||||
target: search binary_collection, and check the result: distance
|
target: search binary_collection, and check the result: distance
|
||||||
method: compare the return distance value with value computed with Inner product
|
method: compare the return distance value with value computed with Inner product
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
nq = 1
|
nq = 1
|
||||||
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
||||||
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
||||||
@ -2521,11 +2521,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_distance_superstructure_flat_index_B(self, connect, binary_collection):
|
def test_search_distance_superstructure_flat_index_B(self, connect, binary_collection):
|
||||||
'''
|
"""
|
||||||
target: search binary_collection, and check the result: distance
|
target: search binary_collection, and check the result: distance
|
||||||
method: compare the return distance value with value computed with SUPER
|
method: compare the return distance value with value computed with SUPER
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
top_k = 3
|
top_k = 3
|
||||||
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
||||||
query_int_vectors, query_vecs = gen_binary_super_vectors(int_vectors, 2)
|
query_int_vectors, query_vecs = gen_binary_super_vectors(int_vectors, 2)
|
||||||
@ -2542,11 +2542,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_distance_tanimoto_flat_index(self, connect, binary_collection):
|
def test_search_distance_tanimoto_flat_index(self, connect, binary_collection):
|
||||||
'''
|
"""
|
||||||
target: search binary_collection, and check the result: distance
|
target: search binary_collection, and check the result: distance
|
||||||
method: compare the return distance value with value computed with Inner product
|
method: compare the return distance value with value computed with Inner product
|
||||||
expected: the return distance equals to the computed value
|
expected: the return distance equals to the computed value
|
||||||
'''
|
"""
|
||||||
nq = 1
|
nq = 1
|
||||||
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
int_vectors, entities, ids = init_binary_data(connect, binary_collection, nb=2)
|
||||||
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
query_int_vectors, query_entities, tmp_ids = init_binary_data(connect, binary_collection, nb=1, insert=False)
|
||||||
@ -2560,11 +2560,11 @@ class TestSearchBase:
|
|||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
@pytest.mark.timeout(300)
|
@pytest.mark.timeout(300)
|
||||||
def test_search_concurrent_multithreads_single_connection(self, connect, args):
|
def test_search_concurrent_multithreads_single_connection(self, connect, args):
|
||||||
'''
|
"""
|
||||||
target: test concurrent search with multiprocessess
|
target: test concurrent search with multiprocessess
|
||||||
method: search with 10 processes, each process uses dependent connection
|
method: search with 10 processes, each process uses dependent connection
|
||||||
expected: status ok and the returned vectors should be query_records
|
expected: status ok and the returned vectors should be query_records
|
||||||
'''
|
"""
|
||||||
nb = 100
|
nb = 100
|
||||||
top_k = 10
|
top_k = 10
|
||||||
threads_num = 4
|
threads_num = 4
|
||||||
@ -2593,11 +2593,11 @@ class TestSearchBase:
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_search_multi_collections(self, connect, args):
|
def test_search_multi_collections(self, connect, args):
|
||||||
'''
|
"""
|
||||||
target: test search multi collections of L2
|
target: test search multi collections of L2
|
||||||
method: add vectors into 10 collections, and search
|
method: add vectors into 10 collections, and search
|
||||||
expected: search status ok, the length of result
|
expected: search status ok, the length of result
|
||||||
'''
|
"""
|
||||||
num = 10
|
num = 10
|
||||||
top_k = 10
|
top_k = 10
|
||||||
nq = 20
|
nq = 20
|
||||||
@ -2627,10 +2627,10 @@ class TestSearchDSL(object):
|
|||||||
"""
|
"""
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_no_must(self, connect, collection):
|
def test_query_no_must(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query without must expr
|
method: build query without must expr
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
# entities, ids = init_data(connect, collection)
|
# entities, ids = init_data(connect, collection)
|
||||||
query = update_query_expr(default_query, keep_old=False)
|
query = update_query_expr(default_query, keep_old=False)
|
||||||
with pytest.raises(Exception) as e:
|
with pytest.raises(Exception) as e:
|
||||||
@ -2638,10 +2638,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L0)
|
@pytest.mark.tags(CaseLabel.L0)
|
||||||
def test_query_no_vector_term_only(self, connect, collection):
|
def test_query_no_vector_term_only(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query without vector only term
|
method: build query without vector only term
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
# entities, ids = init_data(connect, collection)
|
# entities, ids = init_data(connect, collection)
|
||||||
expr = {
|
expr = {
|
||||||
"must": [gen_default_term_expr]
|
"must": [gen_default_term_expr]
|
||||||
@ -2652,10 +2652,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L0)
|
@pytest.mark.tags(CaseLabel.L0)
|
||||||
def test_query_no_vector_range_only(self, connect, collection):
|
def test_query_no_vector_range_only(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query without vector only range
|
method: build query without vector only range
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
# entities, ids = init_data(connect, collection)
|
# entities, ids = init_data(connect, collection)
|
||||||
expr = {
|
expr = {
|
||||||
"must": [gen_default_range_expr]
|
"must": [gen_default_range_expr]
|
||||||
@ -2674,10 +2674,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L0)
|
@pytest.mark.tags(CaseLabel.L0)
|
||||||
def test_query_wrong_format(self, connect, collection):
|
def test_query_wrong_format(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query without must expr, with wrong expr name
|
method: build query without must expr, with wrong expr name
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
# entities, ids = init_data(connect, collection)
|
# entities, ids = init_data(connect, collection)
|
||||||
expr = {
|
expr = {
|
||||||
"must1": [gen_default_term_expr]
|
"must1": [gen_default_term_expr]
|
||||||
@ -2688,10 +2688,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L0)
|
@pytest.mark.tags(CaseLabel.L0)
|
||||||
def test_query_empty(self, connect, collection):
|
def test_query_empty(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: search with empty query
|
method: search with empty query
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
query = {}
|
query = {}
|
||||||
with pytest.raises(Exception) as e:
|
with pytest.raises(Exception) as e:
|
||||||
res = connect.search(collection, query)
|
res = connect.search(collection, query)
|
||||||
@ -2703,10 +2703,10 @@ class TestSearchDSL(object):
|
|||||||
"""
|
"""
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_term_value_not_in(self, connect, collection):
|
def test_query_term_value_not_in(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with vector and term expr, with no term can be filtered
|
method: build query with vector and term expr, with no term can be filtered
|
||||||
expected: filter pass
|
expected: filter pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
expr = {
|
expr = {
|
||||||
"must": [gen_default_vector_expr(default_query), gen_default_term_expr(values=[100000])]}
|
"must": [gen_default_vector_expr(default_query), gen_default_term_expr(values=[100000])]}
|
||||||
@ -2719,10 +2719,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_term_value_all_in(self, connect, collection):
|
def test_query_term_value_all_in(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with vector and term expr, with all term can be filtered
|
method: build query with vector and term expr, with all term can be filtered
|
||||||
expected: filter pass
|
expected: filter pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
expr = {"must": [gen_default_vector_expr(default_query), gen_default_term_expr(values=[1])]}
|
expr = {"must": [gen_default_vector_expr(default_query), gen_default_term_expr(values=[1])]}
|
||||||
query = update_query_expr(default_query, expr=expr)
|
query = update_query_expr(default_query, expr=expr)
|
||||||
@ -2734,10 +2734,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_term_values_not_in(self, connect, collection):
|
def test_query_term_values_not_in(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with vector and term expr, with no term can be filtered
|
method: build query with vector and term expr, with no term can be filtered
|
||||||
expected: filter pass
|
expected: filter pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
expr = {"must": [gen_default_vector_expr(default_query),
|
expr = {"must": [gen_default_vector_expr(default_query),
|
||||||
gen_default_term_expr(values=[i for i in range(100000, 100010)])]}
|
gen_default_term_expr(values=[i for i in range(100000, 100010)])]}
|
||||||
@ -2750,10 +2750,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_term_values_all_in(self, connect, collection):
|
def test_query_term_values_all_in(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with vector and term expr, with all term can be filtered
|
method: build query with vector and term expr, with all term can be filtered
|
||||||
expected: filter pass
|
expected: filter pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
expr = {"must": [gen_default_vector_expr(default_query), gen_default_term_expr()]}
|
expr = {"must": [gen_default_vector_expr(default_query), gen_default_term_expr()]}
|
||||||
query = update_query_expr(default_query, expr=expr)
|
query = update_query_expr(default_query, expr=expr)
|
||||||
@ -2770,10 +2770,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_term_values_parts_in(self, connect, collection):
|
def test_query_term_values_parts_in(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with vector and term expr, with parts of term can be filtered
|
method: build query with vector and term expr, with parts of term can be filtered
|
||||||
expected: filter pass
|
expected: filter pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
expr = {"must": [gen_default_vector_expr(default_query),
|
expr = {"must": [gen_default_vector_expr(default_query),
|
||||||
gen_default_term_expr(
|
gen_default_term_expr(
|
||||||
@ -2787,10 +2787,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_term_values_repeat(self, connect, collection):
|
def test_query_term_values_repeat(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with vector and term expr, with the same values
|
method: build query with vector and term expr, with the same values
|
||||||
expected: filter pass
|
expected: filter pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
expr = {
|
expr = {
|
||||||
"must": [gen_default_vector_expr(default_query),
|
"must": [gen_default_vector_expr(default_query),
|
||||||
@ -2804,10 +2804,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_term_value_empty(self, connect, collection):
|
def test_query_term_value_empty(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with term value empty
|
method: build query with term value empty
|
||||||
expected: return null
|
expected: return null
|
||||||
'''
|
"""
|
||||||
expr = {"must": [gen_default_vector_expr(default_query), gen_default_term_expr(values=[])]}
|
expr = {"must": [gen_default_vector_expr(default_query), gen_default_term_expr(values=[])]}
|
||||||
query = update_query_expr(default_query, expr=expr)
|
query = update_query_expr(default_query, expr=expr)
|
||||||
connect.load_collection(collection)
|
connect.load_collection(collection)
|
||||||
@ -2817,10 +2817,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L0)
|
@pytest.mark.tags(CaseLabel.L0)
|
||||||
def test_query_complex_dsl(self, connect, collection):
|
def test_query_complex_dsl(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: query with complicated dsl
|
method: query with complicated dsl
|
||||||
expected: no error raised
|
expected: no error raised
|
||||||
'''
|
"""
|
||||||
expr = {"must": [
|
expr = {"must": [
|
||||||
{"must": [{"should": [gen_default_term_expr(values=[1]), gen_default_range_expr()]}]},
|
{"must": [{"should": [gen_default_term_expr(values=[1]), gen_default_range_expr()]}]},
|
||||||
{"must": [gen_default_vector_expr(default_query)]}
|
{"must": [gen_default_vector_expr(default_query)]}
|
||||||
@ -2840,10 +2840,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_term_key_error(self, connect, collection):
|
def test_query_term_key_error(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with term key error
|
method: build query with term key error
|
||||||
expected: Exception raised
|
expected: Exception raised
|
||||||
'''
|
"""
|
||||||
expr = {"must": [gen_default_vector_expr(default_query),
|
expr = {"must": [gen_default_vector_expr(default_query),
|
||||||
gen_default_term_expr(keyword="terrm", values=[i for i in range(default_nb // 2)])]}
|
gen_default_term_expr(keyword="terrm", values=[i for i in range(default_nb // 2)])]}
|
||||||
query = update_query_expr(default_query, expr=expr)
|
query = update_query_expr(default_query, expr=expr)
|
||||||
@ -2859,10 +2859,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_term_wrong_format(self, connect, collection, get_invalid_term):
|
def test_query_term_wrong_format(self, connect, collection, get_invalid_term):
|
||||||
'''
|
"""
|
||||||
method: build query with wrong format term
|
method: build query with wrong format term
|
||||||
expected: Exception raised
|
expected: Exception raised
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
term = get_invalid_term
|
term = get_invalid_term
|
||||||
expr = {"must": [gen_default_vector_expr(default_query), term]}
|
expr = {"must": [gen_default_vector_expr(default_query), term]}
|
||||||
@ -2872,10 +2872,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_term_field_named_term(self, connect, collection):
|
def test_query_term_field_named_term(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with field named "term"
|
method: build query with field named "term"
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
term_fields = add_field_default(default_fields, field_name="term")
|
term_fields = add_field_default(default_fields, field_name="term")
|
||||||
collection_term = gen_unique_str("term")
|
collection_term = gen_unique_str("term")
|
||||||
connect.create_collection(collection_term, term_fields)
|
connect.create_collection(collection_term, term_fields)
|
||||||
@ -2899,10 +2899,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_term_one_field_not_existed(self, connect, collection):
|
def test_query_term_one_field_not_existed(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with two fields term, one of it not existed
|
method: build query with two fields term, one of it not existed
|
||||||
expected: exception raised
|
expected: exception raised
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
term = gen_default_term_expr()
|
term = gen_default_term_expr()
|
||||||
term["term"].update({"a": [0]})
|
term["term"].update({"a": [0]})
|
||||||
@ -2919,10 +2919,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L0)
|
@pytest.mark.tags(CaseLabel.L0)
|
||||||
def test_query_range_key_error(self, connect, collection):
|
def test_query_range_key_error(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with range key error
|
method: build query with range key error
|
||||||
expected: Exception raised
|
expected: Exception raised
|
||||||
'''
|
"""
|
||||||
range = gen_default_range_expr(keyword="ranges")
|
range = gen_default_range_expr(keyword="ranges")
|
||||||
expr = {"must": [gen_default_vector_expr(default_query), range]}
|
expr = {"must": [gen_default_vector_expr(default_query), range]}
|
||||||
query = update_query_expr(default_query, expr=expr)
|
query = update_query_expr(default_query, expr=expr)
|
||||||
@ -2938,10 +2938,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_range_wrong_format(self, connect, collection, get_invalid_range):
|
def test_query_range_wrong_format(self, connect, collection, get_invalid_range):
|
||||||
'''
|
"""
|
||||||
method: build query with wrong format range
|
method: build query with wrong format range
|
||||||
expected: Exception raised
|
expected: Exception raised
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
range = get_invalid_range
|
range = get_invalid_range
|
||||||
expr = {"must": [gen_default_vector_expr(default_query), range]}
|
expr = {"must": [gen_default_vector_expr(default_query), range]}
|
||||||
@ -2951,10 +2951,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_range_string_ranges(self, connect, collection):
|
def test_query_range_string_ranges(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with invalid ranges
|
method: build query with invalid ranges
|
||||||
expected: raise Exception
|
expected: raise Exception
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
ranges = {"GT": "0", "LT": "1000"}
|
ranges = {"GT": "0", "LT": "1000"}
|
||||||
range = gen_default_range_expr(ranges=ranges)
|
range = gen_default_range_expr(ranges=ranges)
|
||||||
@ -2965,10 +2965,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_range_invalid_ranges(self, connect, collection):
|
def test_query_range_invalid_ranges(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with invalid ranges
|
method: build query with invalid ranges
|
||||||
expected: 0
|
expected: 0
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
ranges = {"GT": default_nb, "LT": 0}
|
ranges = {"GT": default_nb, "LT": 0}
|
||||||
range = gen_default_range_expr(ranges=ranges)
|
range = gen_default_range_expr(ranges=ranges)
|
||||||
@ -2987,10 +2987,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_range_valid_ranges(self, connect, collection, get_valid_ranges):
|
def test_query_range_valid_ranges(self, connect, collection, get_valid_ranges):
|
||||||
'''
|
"""
|
||||||
method: build query with valid ranges
|
method: build query with valid ranges
|
||||||
expected: pass
|
expected: pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
ranges = get_valid_ranges
|
ranges = get_valid_ranges
|
||||||
range = gen_default_range_expr(ranges=ranges)
|
range = gen_default_range_expr(ranges=ranges)
|
||||||
@ -3003,10 +3003,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L0)
|
@pytest.mark.tags(CaseLabel.L0)
|
||||||
def test_query_range_one_field_not_existed(self, connect, collection):
|
def test_query_range_one_field_not_existed(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with two fields ranges, one of fields not existed
|
method: build query with two fields ranges, one of fields not existed
|
||||||
expected: exception raised
|
expected: exception raised
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
range = gen_default_range_expr()
|
range = gen_default_range_expr()
|
||||||
range["range"].update({"a": {"GT": 1, "LT": default_nb // 2}})
|
range["range"].update({"a": {"GT": 1, "LT": default_nb // 2}})
|
||||||
@ -3022,10 +3022,10 @@ class TestSearchDSL(object):
|
|||||||
"""
|
"""
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_multi_term_has_common(self, connect, collection):
|
def test_query_multi_term_has_common(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with multi term with same field, and values has common
|
method: build query with multi term with same field, and values has common
|
||||||
expected: pass
|
expected: pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
term_first = gen_default_term_expr()
|
term_first = gen_default_term_expr()
|
||||||
term_second = gen_default_term_expr(values=[i for i in range(default_nb // 3)])
|
term_second = gen_default_term_expr(values=[i for i in range(default_nb // 3)])
|
||||||
@ -3038,10 +3038,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_multi_term_no_common(self, connect, collection):
|
def test_query_multi_term_no_common(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with multi range with same field, and ranges no common
|
method: build query with multi range with same field, and ranges no common
|
||||||
expected: pass
|
expected: pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
term_first = gen_default_term_expr()
|
term_first = gen_default_term_expr()
|
||||||
term_second = gen_default_term_expr(values=[i for i in range(default_nb // 2, default_nb + default_nb // 2)])
|
term_second = gen_default_term_expr(values=[i for i in range(default_nb // 2, default_nb + default_nb // 2)])
|
||||||
@ -3054,10 +3054,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_multi_term_different_fields(self, connect, collection):
|
def test_query_multi_term_different_fields(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with multi range with same field, and ranges no common
|
method: build query with multi range with same field, and ranges no common
|
||||||
expected: pass
|
expected: pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
term_first = gen_default_term_expr()
|
term_first = gen_default_term_expr()
|
||||||
term_second = gen_default_term_expr(field="float",
|
term_second = gen_default_term_expr(field="float",
|
||||||
@ -3071,10 +3071,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_single_term_multi_fields(self, connect, collection):
|
def test_query_single_term_multi_fields(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with multi term, different field each term
|
method: build query with multi term, different field each term
|
||||||
expected: pass
|
expected: pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
term_first = {"int64": {"values": [i for i in range(default_nb // 2)]}}
|
term_first = {"int64": {"values": [i for i in range(default_nb // 2)]}}
|
||||||
term_second = {"float": {"values": [float(i) for i in range(default_nb // 2, default_nb)]}}
|
term_second = {"float": {"values": [float(i) for i in range(default_nb // 2, default_nb)]}}
|
||||||
@ -3086,10 +3086,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_multi_range_has_common(self, connect, collection):
|
def test_query_multi_range_has_common(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with multi range with same field, and ranges has common
|
method: build query with multi range with same field, and ranges has common
|
||||||
expected: pass
|
expected: pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
range_one = gen_default_range_expr()
|
range_one = gen_default_range_expr()
|
||||||
range_two = gen_default_range_expr(ranges={"GT": 1, "LT": default_nb // 3})
|
range_two = gen_default_range_expr(ranges={"GT": 1, "LT": default_nb // 3})
|
||||||
@ -3102,10 +3102,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_multi_range_no_common(self, connect, collection):
|
def test_query_multi_range_no_common(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with multi range with same field, and ranges no common
|
method: build query with multi range with same field, and ranges no common
|
||||||
expected: pass
|
expected: pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
range_one = gen_default_range_expr()
|
range_one = gen_default_range_expr()
|
||||||
range_two = gen_default_range_expr(ranges={"GT": default_nb // 2, "LT": default_nb})
|
range_two = gen_default_range_expr(ranges={"GT": default_nb // 2, "LT": default_nb})
|
||||||
@ -3118,10 +3118,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_multi_range_different_fields(self, connect, collection):
|
def test_query_multi_range_different_fields(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with multi range, different field each range
|
method: build query with multi range, different field each range
|
||||||
expected: pass
|
expected: pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
range_first = gen_default_range_expr()
|
range_first = gen_default_range_expr()
|
||||||
range_second = gen_default_range_expr(field="float", ranges={"GT": default_nb // 2, "LT": default_nb})
|
range_second = gen_default_range_expr(field="float", ranges={"GT": default_nb // 2, "LT": default_nb})
|
||||||
@ -3134,10 +3134,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_single_range_multi_fields(self, connect, collection):
|
def test_query_single_range_multi_fields(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with multi range, different field each range
|
method: build query with multi range, different field each range
|
||||||
expected: pass
|
expected: pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
range_first = {"int64": {"GT": 0, "LT": default_nb // 2}}
|
range_first = {"int64": {"GT": 0, "LT": default_nb // 2}}
|
||||||
range_second = {"float": {"GT": default_nb / 2, "LT": float(default_nb)}}
|
range_second = {"float": {"GT": default_nb / 2, "LT": float(default_nb)}}
|
||||||
@ -3154,10 +3154,10 @@ class TestSearchDSL(object):
|
|||||||
"""
|
"""
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_single_term_range_has_common(self, connect, collection):
|
def test_query_single_term_range_has_common(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with single term single range
|
method: build query with single term single range
|
||||||
expected: pass
|
expected: pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
term = gen_default_term_expr()
|
term = gen_default_term_expr()
|
||||||
range = gen_default_range_expr(ranges={"GT": -1, "LT": default_nb // 2})
|
range = gen_default_range_expr(ranges={"GT": -1, "LT": default_nb // 2})
|
||||||
@ -3170,10 +3170,10 @@ class TestSearchDSL(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_single_term_range_no_common(self, connect, collection):
|
def test_query_single_term_range_no_common(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with single term single range
|
method: build query with single term single range
|
||||||
expected: pass
|
expected: pass
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
term = gen_default_term_expr()
|
term = gen_default_term_expr()
|
||||||
range = gen_default_range_expr(ranges={"GT": default_nb // 2, "LT": default_nb})
|
range = gen_default_range_expr(ranges={"GT": default_nb // 2, "LT": default_nb})
|
||||||
@ -3191,10 +3191,10 @@ class TestSearchDSL(object):
|
|||||||
"""
|
"""
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_multi_vectors_same_field(self, connect, collection):
|
def test_query_multi_vectors_same_field(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query with two vectors same field
|
method: build query with two vectors same field
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
vector1 = default_query
|
vector1 = default_query
|
||||||
vector2 = gen_query_vectors(field_name, entities, default_top_k, nq=2)
|
vector2 = gen_query_vectors(field_name, entities, default_top_k, nq=2)
|
||||||
@ -3215,10 +3215,10 @@ class TestSearchDSLBools(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_no_bool(self, connect, collection):
|
def test_query_no_bool(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query without bool expr
|
method: build query without bool expr
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
entities, ids = init_data(connect, collection)
|
entities, ids = init_data(connect, collection)
|
||||||
expr = {"bool1": {}}
|
expr = {"bool1": {}}
|
||||||
query = expr
|
query = expr
|
||||||
@ -3227,10 +3227,10 @@ class TestSearchDSLBools(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L0)
|
@pytest.mark.tags(CaseLabel.L0)
|
||||||
def test_query_should_only_term(self, connect, collection):
|
def test_query_should_only_term(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query without must, with should.term instead
|
method: build query without must, with should.term instead
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
expr = {"should": gen_default_term_expr}
|
expr = {"should": gen_default_term_expr}
|
||||||
query = update_query_expr(default_query, keep_old=False, expr=expr)
|
query = update_query_expr(default_query, keep_old=False, expr=expr)
|
||||||
with pytest.raises(Exception) as e:
|
with pytest.raises(Exception) as e:
|
||||||
@ -3238,10 +3238,10 @@ class TestSearchDSLBools(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L0)
|
@pytest.mark.tags(CaseLabel.L0)
|
||||||
def test_query_should_only_vector(self, connect, collection):
|
def test_query_should_only_vector(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query without must, with should.vector instead
|
method: build query without must, with should.vector instead
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
expr = {"should": default_query["bool"]["must"]}
|
expr = {"should": default_query["bool"]["must"]}
|
||||||
query = update_query_expr(default_query, keep_old=False, expr=expr)
|
query = update_query_expr(default_query, keep_old=False, expr=expr)
|
||||||
with pytest.raises(Exception) as e:
|
with pytest.raises(Exception) as e:
|
||||||
@ -3249,10 +3249,10 @@ class TestSearchDSLBools(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_must_not_only_term(self, connect, collection):
|
def test_query_must_not_only_term(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query without must, with must_not.term instead
|
method: build query without must, with must_not.term instead
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
expr = {"must_not": gen_default_term_expr}
|
expr = {"must_not": gen_default_term_expr}
|
||||||
query = update_query_expr(default_query, keep_old=False, expr=expr)
|
query = update_query_expr(default_query, keep_old=False, expr=expr)
|
||||||
with pytest.raises(Exception) as e:
|
with pytest.raises(Exception) as e:
|
||||||
@ -3260,10 +3260,10 @@ class TestSearchDSLBools(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_must_not_vector(self, connect, collection):
|
def test_query_must_not_vector(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query without must, with must_not.vector instead
|
method: build query without must, with must_not.vector instead
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
expr = {"must_not": default_query["bool"]["must"]}
|
expr = {"must_not": default_query["bool"]["must"]}
|
||||||
query = update_query_expr(default_query, keep_old=False, expr=expr)
|
query = update_query_expr(default_query, keep_old=False, expr=expr)
|
||||||
with pytest.raises(Exception) as e:
|
with pytest.raises(Exception) as e:
|
||||||
@ -3271,10 +3271,10 @@ class TestSearchDSLBools(object):
|
|||||||
|
|
||||||
@pytest.mark.tags(CaseLabel.L2)
|
@pytest.mark.tags(CaseLabel.L2)
|
||||||
def test_query_must_should(self, connect, collection):
|
def test_query_must_should(self, connect, collection):
|
||||||
'''
|
"""
|
||||||
method: build query must, and with should.term
|
method: build query must, and with should.term
|
||||||
expected: error raised
|
expected: error raised
|
||||||
'''
|
"""
|
||||||
expr = {"should": gen_default_term_expr}
|
expr = {"should": gen_default_term_expr}
|
||||||
query = update_query_expr(default_query, keep_old=True, expr=expr)
|
query = update_query_expr(default_query, keep_old=True, expr=expr)
|
||||||
with pytest.raises(Exception) as e:
|
with pytest.raises(Exception) as e:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user