Skip to content

Latest commit

 

History

History
241 lines (221 loc) · 6.05 KB

File metadata and controls

241 lines (221 loc) · 6.05 KB

import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import FilteredTextBlock from '@site/src/components/Documentation/FilteredTextBlock';

import PyCode from '!!raw-loader!/_includes/code/graphql.aggregate.simple.py'; import TSCode from '!!raw-loader!/_includes/code/howto/search.aggregate.ts'; import JavaV6Code from '!!raw-loader!/_includes/code/java-v6/src/test/java/SearchAggregateTest.java'; import CSharpCode from '!!raw-loader!/_includes/code/csharp/SearchAggregateTest.cs';

package main

import (
  "context"
  "fmt"

  "github.com/weaviate/weaviate-go-client/v5/weaviate"
  "github.com/weaviate/weaviate-go-client/v5/weaviate/graphql"
)

func main() {
  cfg := weaviate.Config{
    Host:   "localhost:8080",
    Scheme: "http",
  }
  client, err := weaviate.NewClient(cfg)
  if err != nil {
    panic(err)
  }

  title := graphql.Field{Name: "title"}
  url := graphql.Field{Name: "url"}
  wordCount := graphql.Field{
    Name: "wordCount", Fields: []graphql.Field{
      {Name: "mean"},
      {Name: "maximum"},
      {Name: "median"},
      {Name: "minimum"},
      {Name: "mode"},
      {Name: "sum"},
      {Name: "type"},
    },
  }
  inPublication := graphql.Field{
    Name: "inPublication", Fields: []graphql.Field{
      {Name: "pointingTo"},
      {Name: "count"},
    },
  }

  // nearText
  nearText := &graphql.NearTextArgumentBuilder{}
  nearText.WithDistance(0.85).  // prior to v1.14 use WithCertainty()
          WithConcepts([]string{"apple iphone"})

  result, err := client.GraphQL().
    Aggregate().
    WithFields(title, url, wordCount, inPublication).
    WithNearText(nearText).
    WithClassName("Article").
    WithObjectLimit(100). // at least one of distance or objectLimit need to be set
    Do(context.Background())
  if err != nil {
    panic(err)
  }
  fmt.Printf("%v", result)
}
package io.weaviate;

import io.weaviate.client.Config;
import io.weaviate.client.WeaviateClient;
import io.weaviate.client.base.Result;
import io.weaviate.client.v1.graphql.model.GraphQLResponse;
import io.weaviate.client.v1.graphql.query.argument.NearTextArgument;
import io.weaviate.client.v1.graphql.query.fields.Field;

public class App {
  public static void main(String[] args) {
    Config config = new Config("http", "localhost:8080");
    WeaviateClient client = new WeaviateClient(config);
    Field meta = Field.builder()
      .name("meta")
      .fields(new Field[]{
        Field.builder().name("count").build()
      }).build();
    Field wordCount = Field.builder()
      .name("wordCount")
      .fields(new Field[]{
        Field.builder().name("mean").build(),
        Field.builder().name("maximum").build(),
        Field.builder().name("median").build(),
        Field.builder().name("minimum").build(),
        Field.builder().name("mode").build(),
        Field.builder().name("sum").build(),
        Field.builder().name("type").build()
      }).build();
    Field inPublication = Field.builder()
      .name("inPublication")
      .fields(new Field[]{
        Field.builder().name("pointingTo").build(),
        Field.builder().name("count").build()
      }).build();

    NearTextArgument nearText = NearTextArgument.builder()
      .distance(0.7f)  // prior to v1.14 use .certainty()
      .concepts(new String[]{ "pizza" })
      .build();

    Result<GraphQLResponse> result = client.graphQL().aggregate()
      .withClassName("Article")
      .withFields(meta, wordCount, inPublication)
      .withNearText(nearText)
      .withObjectLimit(100) // at least one of distance or objectLimit need to be set
      .run();
    if (result.hasErrors()) {
      System.out.println(result.getError());
      return;
    }
    System.out.println(result.getResult());
  }
}
# See the notes from the GraphQL example
echo '{
    "query": "{
      Aggregate {
        Article(nearText:{
          concepts: [\"apple iphone\"]
          distance: 0.7
        },
        objectLimit: 200) {
          meta {
            count
          }
          inPublication {
            pointingTo
            type
          }
          wordCount {
            count
            maximum
            mean
            median
            minimum
            mode
            sum
            type
          }
        }
      }
    }"
  }' | curl \
    -X POST \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer learn-weaviate' \
    -H "X-OpenAI-Api-Key: $OPENAI_API_KEY" \
    -d @- \
    https://edu-demo.weaviate.network/v1/graphql
{
  Aggregate {
    Article(nearText:{
      concepts: ["apple iphone"]
      distance: 0.7        # prior to v1.14 use "certainty" instead of "distance"
    },
    objectLimit: 200) {    # at least one of "objectLimit",
      meta {               # and/or "distance" must be set
        count              # when using near media filters
      }
      inPublication {
        pointingTo
        type
      }
      wordCount {
        count
        maximum
        mean
        median
        minimum
        mode
        sum
        type
      }
    }
  }
}