diff --git a/src/Elastic.Documentation/Search/DocumentationDocument.cs b/src/Elastic.Documentation/Search/DocumentationDocument.cs index 8dc602eab..266d9519f 100644 --- a/src/Elastic.Documentation/Search/DocumentationDocument.cs +++ b/src/Elastic.Documentation/Search/DocumentationDocument.cs @@ -154,6 +154,13 @@ public record DocumentationDocument [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string[]? AiQuestions { get; set; } + [AiField("Short, simple questions a user would type into a search bar (3-10 words). Think autocomplete — what someone types when they're starting to explore a topic, not deep technical questions. Use the feature or product name but keep the question simple. Avoid jargon or implementation details. Examples: 'What is the bulk API?', 'How do I index documents?', 'Why is indexing slow?'", + MinItems = 3, MaxItems = 5)] + [Text] + [JsonPropertyName("ai_autocomplete_questions")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string[]? AiAutocompleteQuestions { get; set; } + [AiField("Simple 2-4 word tasks a dev wants to do. Examples: 'index documents', 'check cluster health', 'enable TLS', 'fix slow queries', 'backup data'", MinItems = 2, MaxItems = 4)] [Text] diff --git a/src/Elastic.Documentation/Search/DocumentationMappingConfig.cs b/src/Elastic.Documentation/Search/DocumentationMappingConfig.cs index 1195bb261..4c2a7df4b 100644 --- a/src/Elastic.Documentation/Search/DocumentationMappingConfig.cs +++ b/src/Elastic.Documentation/Search/DocumentationMappingConfig.cs @@ -74,6 +74,14 @@ internal static MappingsBuilder ConfigureCommonMappings(M .Analyzer("synonyms_fixed_analyzer") .SearchAnalyzer("synonyms_analyzer") .IndexOptions("offsets"))) + .AddField("ai_autocomplete_questions", f => f.Text() + .Analyzer("synonyms_fixed_analyzer") + .SearchAnalyzer("synonyms_analyzer") + .MultiField("completion", mf => mf.SearchAsYouType() + .Analyzer("synonyms_fixed_analyzer") + .SearchAnalyzer("synonyms_analyzer") + .IndexOptions("offsets")) + .MultiField("suggest", mf => mf.Completion())) // Keyword fields with multi-fields .Url(f => f .MultiField("match", mf => mf.Text()) @@ -113,6 +121,7 @@ public MappingsBuilder ConfigureMappings(MappingsBuilder< .AddField("abstract.semantic_text", f => f.SemanticText()) .AddField("ai_rag_optimized_summary.semantic_text", f => f.SemanticText()) .AddField("ai_questions.semantic_text", f => f.SemanticText()) + .AddField("ai_autocomplete_questions.semantic_text", f => f.SemanticText()) .AddField("ai_use_cases.semantic_text", f => f.SemanticText()); }