首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >省略包含特定引用的Weaviate对象

省略包含特定引用的Weaviate对象
EN

Stack Overflow用户
提问于 2022-01-19 08:16:38
回答 1查看 42关注 0票数 1

假设我有一个电影数据库,其中有一些标记在其中的类型。我的Weaviate模式如下所示:

代码语言:javascript
复制
"classes": [{
  "class": "Movie",
  "properties": [{
    "name": "name",
    "dataType": ["string"],
  }, {
    "name": "inGenres",
    "dataType": ["Genre"],
  }],
}, {
  "class": "Genre",
  "properties": [{
    "name": "name",
    "dataType": ["string"],
  }],
}]

我想把带有特定类型标记的电影排除在搜索结果之外。具体来说,对于包含以下Movie对象的数据库:

代码语言:javascript
复制
{"name":"foo", "inGenres":[{"name":"drama"}]}
{"name":"bar", "inGenres":[{"name":"horror"},{"name":"thriller"}]}
{"name":"baz", "inGenres":[{"name":"horror"},{"name":"sci-fi"}]}

如果我排除了horror类型,搜索结果应该只返回电影foo。有什么方法可以对GraphQL或Python执行这样的查询吗?

EN

回答 1

Stack Overflow用户

发布于 2022-01-19 23:54:30

您可以使用where filter来实现这一点。

就你的具体情况而言:

代码语言:javascript
复制
{
  Get {
    Article(
      where: {
        path: ["inGenres", "Genre", "name"],
        operator: NotEqual,
        valueString: "horror" 
      }
    ) {
      name
      inGenres {
        ... on Genre {
          name
        }
      }
    }
  }
}

在Python中

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70767263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档