Merge pull request #2475 from mattermost/plt-1606
PLT-1606/PLT-714 Change searches to AND terms instead of OR
Этот коммит содержится в:
@@ -549,10 +549,6 @@ func TestSearchPostsInChannel(t *testing.T) {
|
||||
t.Fatalf("wrong number of posts returned %v", len(result.Order))
|
||||
}
|
||||
|
||||
if result := Client.Must(Client.SearchPosts("sgtitlereview in:")).Data.(*model.PostList); len(result.Order) != 2 {
|
||||
t.Fatalf("wrong number of posts returned %v", len(result.Order))
|
||||
}
|
||||
|
||||
if result := Client.Must(Client.SearchPosts("sgtitlereview channel:" + channel1.Name)).Data.(*model.PostList); len(result.Order) != 1 {
|
||||
t.Fatalf("wrong number of posts returned %v", len(result.Order))
|
||||
}
|
||||
|
||||
@@ -726,13 +726,20 @@ func (s SqlPostStore) Search(teamId string, userId string, params *model.SearchP
|
||||
terms = wildcard.ReplaceAllLiteralString(terms, ":* ")
|
||||
}
|
||||
|
||||
terms = strings.Join(strings.Fields(terms), " | ")
|
||||
terms = strings.Join(strings.Fields(terms), " & ")
|
||||
|
||||
searchClause := fmt.Sprintf("AND %s @@ to_tsquery(:Terms)", searchType)
|
||||
searchQuery = strings.Replace(searchQuery, "SEARCH_CLAUSE", searchClause, 1)
|
||||
} else if utils.Cfg.SqlSettings.DriverName == model.DATABASE_DRIVER_MYSQL {
|
||||
searchClause := fmt.Sprintf("AND MATCH (%s) AGAINST (:Terms IN BOOLEAN MODE)", searchType)
|
||||
searchQuery = strings.Replace(searchQuery, "SEARCH_CLAUSE", searchClause, 1)
|
||||
|
||||
splitTerms := strings.Fields(terms)
|
||||
for i, t := range strings.Fields(terms) {
|
||||
splitTerms[i] = "+" + t
|
||||
}
|
||||
|
||||
terms = strings.Join(splitTerms, " ")
|
||||
}
|
||||
|
||||
queryParams["Terms"] = terms
|
||||
|
||||
@@ -744,12 +744,17 @@ func TestPostStoreSearch(t *testing.T) {
|
||||
}
|
||||
|
||||
r9 := (<-store.Post().Search(teamId, userId, &model.SearchParams{Terms: "mattermost jersey", IsHashtag: false})).Data.(*model.PostList)
|
||||
if len(r9.Order) != 2 {
|
||||
if len(r9.Order) != 0 {
|
||||
t.Fatal("returned wrong search result")
|
||||
}
|
||||
|
||||
r9a := (<-store.Post().Search(teamId, userId, &model.SearchParams{Terms: "corey new york", IsHashtag: false})).Data.(*model.PostList)
|
||||
if len(r9a.Order) != 1 {
|
||||
t.Fatal("returned wrong search result")
|
||||
}
|
||||
|
||||
r10 := (<-store.Post().Search(teamId, userId, &model.SearchParams{Terms: "matter* jer*", IsHashtag: false})).Data.(*model.PostList)
|
||||
if len(r10.Order) != 2 {
|
||||
if len(r10.Order) != 0 {
|
||||
t.Fatal("returned wrong search result")
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user