Skip to content

feat: hybrid search implementation#82

Open
barbara-celi wants to merge 21 commits into
mainfrom
feat/hybrid-search
Open

feat: hybrid search implementation#82
barbara-celi wants to merge 21 commits into
mainfrom
feat/hybrid-search

Conversation

@barbara-celi

Copy link
Copy Markdown
Contributor

Description

This PR adds hybrid search backend support to @vtexdocs/components as an alternative to Algolia, enabling both Help Center and Dev Portal to use the new VTEX Docs Hybrid Search API.

Changes:

  • Extended SearchConfig with new backend option: { backend: 'hybrid', hybrid: {...} }
  • Implemented hybrid search adapter that translates InstantSearch queries to /api/search calls and transforms responses to Algolia-compatible format.
  • Exported new types: HybridSearchConfig and SearchBackendConfig.
  • Maintained full backward compatibility. Existing Algolia implementations work unchanged.
  • The hybrid backend is opt-in via configuration, with no breaking changes to component APIs.

Related:

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Requires change to documentation, which has been updated accordingly.

This commit introduces a new hybrid search adapter for the `@vtexdocs/components` package, allowing integration with the Help Center's API while maintaining backward compatibility with Algolia. Key changes include the addition of a new `HybridSearchConfig` interface, updates to the `search-config.ts` file to support hybrid search, and modifications to the `SearchConfig` function to handle both Algolia and hybrid configurations. The implementation aims for minimal code changes and reuses existing components.
This update modifies the request selection logic in the `search-config.ts` file to prioritize requests with a non-empty query. If no such request is found, it defaults to the first request in the array. This change enhances the hybrid search functionality by ensuring more relevant queries are processed.
@barbara-celi barbara-celi self-assigned this May 5, 2026
@barbara-celi barbara-celi added the release-minor Minor version bump label May 5, 2026
@barbara-celi barbara-celi changed the title [EDU-17906] - feat: hybrid search implementation feat: hybrid search implementation May 5, 2026
Comment thread src/utils/config/search-config.ts
Comment thread src/utils/config/search-config.ts Outdated
barbara-celi and others added 15 commits June 8, 2026 14:06
…tion

This commit introduces a new utility function, `stripMarkdownForSnippet`, to remove Markdown syntax from text snippets, enhancing the readability of search results. Additionally, the `hitsPerPage` configuration is now dynamically set from the search configuration, improving pagination handling in the search results component.
- Enhanced stripMarkdownForSnippet to handle images, code blocks, blockquotes
- Fixed regex patterns for better markdown syntax removal
- Ensures search results display clean plain text without markdown formatting

Co-authored-by: Cursor <cursoragent@cursor.com>
- Add special handling for tracks URLs to use only last segment
- Fix URL pattern: /pt/docs/tracks/modulos-da-vtex-i instead of full path
- Improve snippet handling to remove mid-word truncation
- Strip incomplete words at start of truncated snippets

Co-authored-by: Cursor <cursoragent@cursor.com>
- Added special handling for tutorial URLs to use only the last segment
- Improved URL pattern for special doctypes (faq, known-issues, troubleshooting, announcements) to return only the slug
- Updated comments for clarity on URL construction logic
- Updated URL construction logic to handle multiple special document types (tracks, tutorials, faq, known-issues, troubleshooting, announcements) using a unified approach.
- Simplified the URL pattern to return only the slug for these document types.
- Removed redundant conditions and improved code clarity with updated comments.
- Updated URL construction logic to differentiate between document types (tracks, tutorials, faq, known-issues, troubleshooting, announcements).
- Implemented specific handling for tracks and tutorials to retain "docs" in the URL, while removing it for other types.
- Enhanced comments for clarity on the URL patterns and their respective handling.
…ration

- Added specific handling for 'faq', 'troubleshooting', 'announcements', and 'known-issues' document types to return only the slug in the URL.
- Enhanced comments to clarify the URL patterns and their handling logic.
- Ensured consistent URL construction for localized paths.
# Conflicts:
#	dist/index.css.map
#	dist/index.mjs.map
…electors

Adds data-testid, data-filter, and data-active attributes to
SearchFilterTab and SearchFilterTabBar so Cypress tests in
vtexdocs/helpcenter can select the tab bar, individual tabs,
and count badges without fragile DOM traversal.
Brings in TroubleshootingCard, ListingFilter, and related shared-component
exports (v6.1.0/v6.1.1) so the helpcenter EDU-17906 branch can build
against this version without missing-export TypeScript errors.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-minor Minor version bump

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants