0

Milvus 2.1.2

I create one collection of entities made of one vector (vector) and one string (im_id).

In other words, I associate one image id to each vector. I'm able to make research over the vector. I'm trying to make a query on the image id.

Here is the code:

#!venv/bin/python3

from pymilvus import (
    connections,
    utility,
    FieldSchema,
    CollectionSchema,
    DataType,
    Collection,
)

port = 30100
connections.connect("default", host="localhost", port=port)
utility.drop_collection("hello_milvus")
fields = [
    FieldSchema(name="im_id", dtype=DataType.VARCHAR,
                is_primary=True, auto_id=False,
                max_length=200),
    FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=2)
]
schema = CollectionSchema(fields)
hello_milvus = Collection("hello_milvus", schema)
hello_milvus.load()

vect1 = [10, 20]
vect2 = [3, 4]
vect3 = [5, 6]
im_id1 = "foo"
im_id2 = "bar"
im_id3 = "foo"

hello_milvus.insert([[im_id1], [vect1]]) # this is a foo
hello_milvus.insert([[im_id2], [vect2]]) # this is a bar
hello_milvus.insert([[im_id3], [vect3]]) # this is a foo

print(hello_milvus.num_entities)  # 3 entities, ok

results = hello_milvus.query(expr='im_id == "foo"',
                             output_fields=["vector"])

print("results", results)

This prints : [{'im_id': 'foo', 'vector': [10.0, 20.0]}].

I've tried some variations, but I always get only one result.

Any ideas ? What am I doing wrong ?

Laurent Claessens
  • 547
  • 1
  • 3
  • 18
  • Because if I had to guess, I'd say that it was the primary key. I had the same issue because I set my primary key = 0 for all records. Once I changed that, I got more results. it could be that, even though milvus doesn't check for identical primary keys, it only returns a record w. a primary key once. – twiddler Dec 04 '22 at 15:49

1 Answers1

0

results = hello_milvus.query(expr='im_id like "foo%"', output_fields=["vector"])

Maybe you can try this way to get all the qualified results.

Jack
  • 85
  • 5