Пропуск объектов Weaviate, содержащих конкретную ссылку
Предположим, у меня есть база данных фильмов с тегами некоторых жанров. Моя схема Weaviate выглядит так:
"classes": [{
"class": "Movie",
"properties": [{
"name": "name",
"dataType": ["string"],
}, {
"name": "inGenres",
"dataType": ["Genre"],
}],
}, {
"class": "Genre",
"properties": [{
"name": "name",
"dataType": ["string"],
}],
}]
Я хочу исключить из результатов поиска фильмы с тегами определенного жанра. В частности, для базы данных, содержащей следующие
Movie
объекты:
{"name":"foo", "inGenres":[{"name":"drama"}]}
{"name":"bar", "inGenres":[{"name":"horror"},{"name":"thriller"}]}
{"name":"baz", "inGenres":[{"name":"horror"},{"name":"sci-fi"}]}
Если я исключаю
horror
жанр, результаты поиска должны возвращать только фильм
foo
. Есть ли способ выполнить такой запрос с помощью GraphQL или клиента Python?
1 ответ
Вы можете использоватьwhere
фильтр для достижения этого.
В вашем конкретном случае:
{
Get {
Article(
where: {
path: ["inGenres", "Genre", "name"],
operator: NotEqual,
valueString: "horror"
}
) {
name
inGenres {
... on Genre {
name
}
}
}
}
}
В Питоне
import weaviate
client = weaviate.Client("http://localhost:8080")
where_filter = {
"path": ["inGenres", "Genre", "name"],
"operator": "NotEqual",
"valueString": "horror"
}
query_result = client.query.get("Movie", ["name"]).with_where(where_filter).do()
print(query_result)