in demo-java/demo-vectors/src/main/java/azure/search/sample/Main.java [376:414]
public static void semanticFullSearch(SearchClient searchClient, String fullQuery, String semanticQuery) {
SearchOptions searchOptions = new SearchOptions()
.setTop(3)
.setQueryType(QueryType.FULL)
.setSemanticSearchOptions(new SemanticSearchOptions()
// Set a separate search query that will be solely used for semantic reranking, semantic captions and semantic answers.
.setSemanticQuery(semanticQuery)
.setSemanticConfigurationName("my-semantic-config")
.setQueryAnswer(new QueryAnswer(QueryAnswerType.EXTRACTIVE))
.setQueryCaption(new QueryCaption(QueryCaptionType.EXTRACTIVE)));
SearchPagedIterable results = searchClient.search(
fullQuery,
searchOptions, Context.NONE);
System.out.println("===================================");
System.out.println("Semantic Full Text 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());
}
}
}
}