public static void semanticHybridSearch()

in demo-java/demo-vectors/src/main/java/azure/search/sample/Main.java [326:370]


    public static void semanticHybridSearch(SearchClient searchClient, String query) {
        // Example of using vector search with a semantic query in addition to vectorization.
        VectorQuery vectorizableQuery = new VectorizableTextQuery(query)
            .setKNearestNeighborsCount(3)
            // Set the fields to compare the vector against. This is a comma-delimited list of field names.
            .setFields("contentVector");

        SearchOptions searchOptions = new SearchOptions()
            .setVectorSearchOptions(new VectorSearchOptions()
                .setQueries(vectorizableQuery))
            .setTop(3)
            .setQueryType(QueryType.SEMANTIC)
            .setSemanticSearchOptions(new SemanticSearchOptions()
                .setSemanticConfigurationName("my-semantic-config")
                .setQueryAnswer(new QueryAnswer(QueryAnswerType.EXTRACTIVE))
                .setQueryCaption(new QueryCaption(QueryCaptionType.EXTRACTIVE)));

        SearchPagedIterable results = searchClient.search(
            "what is azure search?",
            searchOptions, Context.NONE);

        System.out.println("===================================");
        System.out.println("Semantic Hybrid Search Results:");
        System.out.println("===================================");

        System.out.println("Query Answer:");
        for (QueryAnswerResult result : results.getSemanticResults().getQueryAnswers()) {
            System.out.println("Answer Highlights: " + result.getHighlights());
            System.out.println("Answer Text: " + result.getText());
        }

        for (SearchResult result : results) {
            SearchDocument doc = result.getDocument(SearchDocument.class);
            System.out.printf("Score: %f, Title: %s: Content: %s%n", result.getScore(), doc.get("title"), doc.get("content"));

            if (result.getSemanticSearch().getQueryCaptions() != null) {
                QueryCaptionResult caption = result.getSemanticSearch().getQueryCaptions().get(0);
                if (!caption.getHighlights().isBlank()) {
                    System.out.println("Caption Highlights: " + caption.getHighlights());
                } else {
                    System.out.println("Caption Text: " + caption.getText());
                }
            }
        }
    }