amaannawab923 commented on code in PR #33357:
URL: https://github.com/apache/superset/pull/33357#discussion_r2075634832
##########
superset/models/helpers.py:
##########
@@ -1888,12 +1888,26 @@ def get_sqla_query( # pylint:
disable=too-many-arguments,too-many-locals,too-ma
elif op in {
utils.FilterOperator.ILIKE.value,
utils.FilterOperator.LIKE.value,
+ utils.FilterOperator.TEXT_SEARCH.value,
}:
if target_generic_type != GenericDataType.STRING:
sqla_col = sa.cast(sqla_col, sa.String)
if op == utils.FilterOperator.LIKE.value:
where_clause_and.append(sqla_col.like(eq))
+ elif op == utils.FilterOperator.TEXT_SEARCH.value:
+ # Convert to string and handle None case
+ search_value = str(eq) if eq is not None else ""
+ if (
+ search_value
+ ): # Only add clause if search value is not empty
+ pattern = search_value.lower()
+ where_clause_and.append(
+ sa.or_(
+ sqla_col.ilike(f"{pattern}%"),
+ sqla_col.ilike(f"% {pattern}%"),
Review Comment:
Checked out pgtrgm ... but it wont suffice our case because we want a prefix
match for strings & substrings & pgtrgm uses fuzzy search that means
Wilson carter will be returned for Wil & car
but it will also be returned for strings like "il" , "art" , "er"
Which isnt expected & will return wrong results
Will try to look for better approach though ... This approach i have
implemented for a pvt fork which worked out greatly hence migrated it here
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]