MM-6992 Added highlighting to elasticsearch results (#8861)

* MM-6992 Added highlighting to elasticsearch results

* Added a unique type for post search matches

* Fixed Elasticsearch matches not being sent through API
Этот коммит содержится в:
Harrison Healey
2018-06-19 05:46:29 -04:00
коммит произвёл Carlos Tadeu Panato Junior
родитель 6d8140337e
Коммит 226d4b2ac8
6 изменённых файлов: 65 добавлений и 8 удалений

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

@@ -2127,6 +2127,17 @@ func (c *Client4) SearchPosts(teamId string, terms string, isOrSearch bool) (*Po
}
}
// SearchPosts returns any posts with matching terms string, including .
func (c *Client4) SearchPostsWithMatches(teamId string, terms string, isOrSearch bool) (*PostSearchResults, *Response) {
requestBody := map[string]interface{}{"terms": terms, "is_or_search": isOrSearch}
if r, err := c.DoApiPost(c.GetTeamRoute(teamId)+"/posts/search", StringInterfaceToJson(requestBody)); err != nil {
return nil, BuildErrorResponse(r, err)
} else {
defer closeBody(r)
return PostSearchResultsFromJson(r.Body), BuildResponse(r)
}
}
// DoPostAction performs a post action.
func (c *Client4) DoPostAction(postId, actionId string) (bool, *Response) {
if r, err := c.DoApiPost(c.GetPostRoute(postId)+"/actions/"+actionId, ""); err != nil {

40
model/post_search_results.go Обычный файл
Просмотреть файл

@@ -0,0 +1,40 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
package model
import (
"encoding/json"
"io"
)
type PostSearchMatches map[string][]string
type PostSearchResults struct {
*PostList
Matches PostSearchMatches `json:"matches"`
}
func MakePostSearchResults(posts *PostList, matches PostSearchMatches) *PostSearchResults {
return &PostSearchResults{
posts,
matches,
}
}
func (o *PostSearchResults) ToJson() string {
copy := *o
copy.PostList.StripActionIntegrations()
b, err := json.Marshal(&copy)
if err != nil {
return ""
} else {
return string(b)
}
}
func PostSearchResultsFromJson(data io.Reader) *PostSearchResults {
var o *PostSearchResults
json.NewDecoder(data).Decode(&o)
return o
}