MM-24530-Add support for search terms with underscore using postgresql engine (#16618)

* add support for search terms with underscore using postgresql

* fix failing tests

Initially issue fix applied to all search terms instead of the ones that contains _

* direct cast tsquery

* fix test issues

* refactor underscored quoted term search

* support search term case-insensitive

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
Antwi Gambrah
2021-01-19 18:40:10 +00:00
коммит произвёл GitHub
родитель 3da6f270ec
Коммит ba3b788e46
3 изменённых файлов: 32 добавлений и 2 удалений

Просмотреть файл

@@ -1481,7 +1481,16 @@ func (s *SqlPostStore) search(teamId string, userId string, params *model.Search
queryParams["Terms"] = "(" + strings.Join(strings.Fields(terms), " & ") + ")" + excludeClause
}
searchClause := fmt.Sprintf("AND to_tsvector('english', %s) @@ to_tsquery('english', :Terms)", searchType)
searchClause := ""
if strings.Contains(terms, "_") {
//Strip quotes off terms with it
if strings.Contains(terms, "\"") {
queryParams["Terms"] = strings.ReplaceAll(queryParams["Terms"].(string), "\"", "")
}
searchClause = fmt.Sprintf("AND lower(%s)::tsvector @@ lower(:Terms)::tsquery", searchType)
} else {
searchClause = fmt.Sprintf("AND to_tsvector('english', %s) @@ to_tsquery('english', :Terms)", searchType)
}
searchQuery = strings.Replace(searchQuery, "SEARCH_CLAUSE", searchClause, 1)
} else if s.DriverName() == model.DATABASE_DRIVER_MYSQL {
if searchType == "Message" {