@vectara/vectara-ui
Version:
Vectara's design system, codified as a React and Sass component library
20 lines (19 loc) • 862 B
JavaScript
export const applyCitationOrder = (searchResults, unorderedSummary) => {
const orderedSearchResults = [];
const citations = unorderedSummary.match(/\[\d+\]/g) || [];
const addedCitations = new Set();
for (let i = 0; i < citations.length; i++) {
const citation = citations[i];
// Ignore citations that have already been added.
if (addedCitations.has(citation))
continue;
// Extract index from [INDEX] format.
const citationIndex = Number(citation.slice(1, citation.length - 1)) - 1;
// Ignore citations that are out of range of the search results.
if (citationIndex < 0 || citationIndex >= searchResults.length)
continue;
orderedSearchResults.push(searchResults[citationIndex]);
addedCitations.add(citation);
}
return orderedSearchResults;
};