Skip to content

Conversation

@aniketpalu
Copy link
Contributor

What this PR does / why we need it:

The search API doesn't indicate which tag matched a query, and tag matching only supports exact matches. This limits discoverability and usability.

  • Adds matched_tag to search results: when a tag matches (exact or fuzzy), the result includes matched_tag as a dictionary {key: value}.
  • Enables fuzzy matching for tags: tags are matched against the combined "key=value" string using the same fuzzy algorithm as names, with a 75% similarity threshold.
  • Preserves existing behaviour: exact tag matches still get score 60; exact matches take priority over fuzzy matches.

Response Example

{
  "query": "data",
  "projects_searched": [
    "test_project"
  ],
  "results": [
    {
      "type": "featureView",
      "name": "user_features",
      "description": "User demographic features",
      "project": "test_project",
      "match_score": 60,
      "matched_tag": {
        "team": "data"
      }
    },
    {
      "type": "featureService",
      "name": "user_service",
      "description": "Service for user-related features",
      "project": "test_project",
      "match_score": 60,
      "matched_tag": {
        "team": "data"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "totalCount": 2,
    "totalPages": 1
  },
  "errors": []
}

Which issue(s) this PR fixes:

RHOAIENG-41600

Misc

Added unit tests.

…pabilities

Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
@aniketpalu aniketpalu requested a review from a team as a code owner December 11, 2025 12:50
Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
Copy link
Member

@ntkathole ntkathole left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

@ntkathole ntkathole merged commit 4a9ffae into feast-dev:master Dec 11, 2025
17 checks passed
franciscojavierarceo pushed a commit that referenced this pull request Dec 16, 2025
# [0.58.0](v0.57.0...v0.58.0) (2025-12-16)

### Bug Fixes

* Add java proto ([#5719](#5719)) ([fc3ea20](fc3ea20))
* Add possibility to force full features names for materialize ops ([#5728](#5728)) ([55c9c36](55c9c36))
* Fixed file registry cache sync ([09505d4](09505d4))
* Handle hyphon in sqlite project name ([#5575](#5575)) ([#5749](#5749)) ([b8346ff](b8346ff))
* Pinned substrait to fix protobuf issue ([d0ef4da](d0ef4da))
* Set TLS certificate annotation only on gRPC service ([#5715](#5715)) ([75d13db](75d13db))
* SQLite online store deletes tables from other projects in shared registry scenarios ([#5766](#5766)) ([fabce76](fabce76))
* Validate not existing entity join keys for preventing panic ([0b93559](0b93559))

### Features

* Add annotations for pod templates ([534e647](534e647))
* Add Pytorch template ([#5780](#5780)) ([6afd353](6afd353))
* Add support for extra options for stream source ([#5618](#5618)) ([18956c2](18956c2))
* Added matched_tag field search api results with fuzzy search capabilities ([#5769](#5769)) ([4a9ffae](4a9ffae))
* Added support for enabling metrics in Feast Operator ([#5317](#5317)) ([#5748](#5748)) ([a8498c2](a8498c2))
* Configure CacheTTLSecondscache,CacheMode for file-based registry in Feast Operator([#5708](#5708)) ([#5744](#5744)) ([f25f83b](f25f83b))
* Implemented Tiling Support for Time-Windowed Aggregations ([#5724](#5724)) ([7a99166](7a99166))
* Offline Store historical features retrieval based on datetime range for spark ([#5720](#5720)) ([27ec8ec](27ec8ec))
* Offline Store historical features retrieval based on datetime range in dask ([#5717](#5717)) ([a16582a](a16582a))
* Production ready feast operator with v1 apiversion ([#5771](#5771)) ([49359c6](49359c6))
* Support for Map value data type ([#5768](#5768)) ([#5772](#5772)) ([b99a8a9](b99a8a9))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants