Hi!
I have created a code with tokenization set to field
, and now it works as expected
from weaviate import classes as wvc
client.collections.delete("Test")
collection = client.collections.create(
name="Test",
vectorizer_config=wvc.config.Configure.Vectorizer.none(),
vector_index_config=wvc.config.Configure.VectorIndex.hnsw(
distance_metric=wvc.config.VectorDistances.COSINE
),
# Multi tenancy to separate each user's data
multi_tenancy_config=wvc.config.Configure.multi_tenancy(
enabled=True, auto_tenant_creation=True, auto_tenant_activation=True
),
properties=[
wvc.config.Property(
name="lastUpdateDeviceId",
data_type=wvc.config.DataType.TEXT,
tokenization=wvc.config.Tokenization.FIELD
)
],
inverted_index_config=wvc.config.Configure.inverted_index(
index_null_state=True,
index_property_length=True,
index_timestamps=True
)
# Specify some properties beforehand to set right data type (i.e. obj[] instead of string[])
# properties=[
# Property(name="tags", data_type=DataType.OBJECT_ARRAY),
# ]
)
collection.tenants.create(
tenants=[
wvc.tenants.Tenant(name="tenantA"),
wvc.tenants.Tenant(name="tenantB"),
]
)
from weaviate.util import generate_uuid5
collection.with_tenant('tenantA').data.insert(
vector=[0.0] * 384,
properties={'lastUpdateDeviceId': 'device-78C24351-F40A-4E37-8953-F003FA474877'},
uuid=generate_uuid5("object1")
)
from datetime import datetime, timedelta, timezone
last_sync_datetime = datetime.now(timezone.utc).astimezone() - timedelta(minutes=10)
collection.with_tenant('tenantA').query.fetch_objects(
filters=wvc.query.Filter.by_update_time().greater_than(last_sync_datetime) &
wvc.query.Filter.by_property("lastUpdateDeviceId").not_equal('device-d06e69fb200a1b8fdb8a96d8aff91e9e7839f35d9ac0ad69780067174e26fda1'),
include_vector=True,
return_metadata=wvc.query.MetadataQuery(last_update_time=True),
)
Note that, if I set the search query to d06e69fb200a1b8fdb8a96d8aff91e9e7839f35d9ac0ad69780067174e26fda1
, instead of device-d0....
it will also work.
This is because device-d06....
will become two key workds: device
and d06...
Let me know if this helps!