Пропуск объектов 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)
Другие вопросы по тегам