diff --git a/x-pack/solutions/search/plugins/search_playground/server/lib/conversational_chain.test.ts b/x-pack/solutions/search/plugins/search_playground/server/lib/conversational_chain.test.ts index 5cf09b4a50bb3..c4b9822e02ca9 100644 --- a/x-pack/solutions/search/plugins/search_playground/server/lib/conversational_chain.test.ts +++ b/x-pack/solutions/search/plugins/search_playground/server/lib/conversational_chain.test.ts @@ -511,7 +511,7 @@ describe('conversational chain', () => { expectedDocs: [ { documents: [ - { metadata: { _id: '1', _index: 'index' }, pageContent: 'field: ' }, + { metadata: { _id: '1', _index: 'index' }, pageContent: '' }, { metadata: { _id: '1', _index: 'website' }, pageContent: diff --git a/x-pack/solutions/search/plugins/search_playground/server/utils/context_document_mapper.test.ts b/x-pack/solutions/search/plugins/search_playground/server/utils/context_document_mapper.test.ts index c48ec645222b1..55504c003df3e 100644 --- a/x-pack/solutions/search/plugins/search_playground/server/utils/context_document_mapper.test.ts +++ b/x-pack/solutions/search/plugins/search_playground/server/utils/context_document_mapper.test.ts @@ -69,4 +69,46 @@ describe('contextDocumentHitMapper', () => { }, }); }); + it('should not include empty field values', () => { + const hit = { + _index: 'test-index', + _score: 1, + _id: 'id', + _source: { + text: 'foo bar baz', + other: '', + }, + }; + const contentField = { 'test-index': ['text', 'other'] }; + const document = contextDocumentHitMapper(contentField)(hit); + expect(document).toEqual({ + pageContent: 'text: foo bar baz', + metadata: { + _score: 1, + _id: 'id', + _index: 'test-index', + }, + }); + }); + it('should handle all empty field values', () => { + const hit = { + _index: 'test-index', + _score: 1, + _id: 'id', + _source: { + text: '', + other: '', + }, + }; + const contentField = { 'test-index': ['text', 'other'] }; + const document = contextDocumentHitMapper(contentField)(hit); + expect(document).toEqual({ + pageContent: '', + metadata: { + _score: 1, + _id: 'id', + _index: 'test-index', + }, + }); + }); }); diff --git a/x-pack/solutions/search/plugins/search_playground/server/utils/context_document_mapper.ts b/x-pack/solutions/search/plugins/search_playground/server/utils/context_document_mapper.ts index a5fa841a0ec3d..c2cf0cf9972f5 100644 --- a/x-pack/solutions/search/plugins/search_playground/server/utils/context_document_mapper.ts +++ b/x-pack/solutions/search/plugins/search_playground/server/utils/context_document_mapper.ts @@ -14,8 +14,10 @@ export const contextDocumentHitMapper = (contentField: ElasticsearchRetrieverContentField) => (hit: SearchHit): Document => { let pageContent: string = ''; - const makePageContentForField = (field: string) => - `${field}: ${getValueForSelectedField(hit, field)}`; + const makePageContentForField = (field: string) => { + const fieldValue = getValueForSelectedField(hit, field); + return fieldValue.length > 0 ? `${field}: ${fieldValue}` : ''; + }; if (typeof contentField === 'string') { pageContent = makePageContentForField(contentField); } else { @@ -23,7 +25,10 @@ export const contextDocumentHitMapper = if (typeof pageContentFieldKey === 'string') { pageContent = makePageContentForField(pageContentFieldKey); } else { - pageContent = pageContentFieldKey.map((field) => makePageContentForField(field)).join('\n'); + pageContent = pageContentFieldKey + .map((field) => makePageContentForField(field)) + .filter((fieldContent) => fieldContent.length > 0) + .join('\n'); } }