假设我有一个电影数据库,其中有一些标记在其中的类型。我的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执行这样的查询吗?
发布于 2022-01-19 23:54:30
您可以使用where filter来实现这一点。
就你的具体情况而言:
{
Get {
Article(
where: {
path: ["inGenres", "Genre", "name"],
operator: NotEqual,
valueString: "horror"
}
) {
name
inGenres {
... on Genre {
name
}
}
}
}
}在Python中
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)https://stackoverflow.com/questions/70767263
复制相似问题