mirror of
https://github.com/documize/community.git
synced 2025-07-19 21:29:42 +02:00
Search history recording
1. Record all search queries. 2. Replaced typeahead with form style for faster search result fetch/rendering.
This commit is contained in:
parent
a6828e6b7f
commit
b4c4decb3b
4 changed files with 77 additions and 32 deletions
|
@ -17,6 +17,7 @@ import (
|
|||
"io/ioutil"
|
||||
"net/http"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/documize/community/core/env"
|
||||
"github.com/documize/community/core/request"
|
||||
|
@ -394,6 +395,8 @@ func (h *Handler) SearchDocuments(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
options.Keywords = strings.TrimSpace(options.Keywords)
|
||||
|
||||
results, err := h.Store.Search.Documents(ctx, options)
|
||||
if err != nil {
|
||||
h.Runtime.Log.Error(method, err)
|
||||
|
@ -406,16 +409,40 @@ func (h *Handler) SearchDocuments(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
// Record user search history
|
||||
go h.recordSearchActivity(ctx, results)
|
||||
if len(results) > 0 {
|
||||
go h.recordSearchActivity(ctx, results, options.Keywords)
|
||||
} else {
|
||||
ctx.Transaction, err = h.Runtime.Db.Beginx()
|
||||
if err != nil {
|
||||
h.Runtime.Log.Error(method, err)
|
||||
return
|
||||
}
|
||||
|
||||
err = h.Store.Activity.RecordUserActivity(ctx, activity.UserActivity{
|
||||
LabelID: "",
|
||||
DocumentID: "",
|
||||
Metadata: options.Keywords,
|
||||
SourceType: activity.SourceTypeSearch,
|
||||
ActivityType: activity.TypeSearched})
|
||||
|
||||
if err != nil {
|
||||
ctx.Transaction.Rollback()
|
||||
h.Runtime.Log.Error(method, err)
|
||||
}
|
||||
|
||||
ctx.Transaction.Commit()
|
||||
}
|
||||
|
||||
h.Store.Audit.Record(ctx, audit.EventTypeSearch)
|
||||
|
||||
response.WriteJSON(w, results)
|
||||
}
|
||||
|
||||
func (h *Handler) recordSearchActivity(ctx domain.RequestContext, q []search.QueryResult) {
|
||||
// Record search request once per document.
|
||||
func (h *Handler) recordSearchActivity(ctx domain.RequestContext, q []search.QueryResult, keywords string) {
|
||||
method := "recordSearchActivity"
|
||||
var err error
|
||||
prev := make(map[string]bool)
|
||||
|
||||
ctx.Transaction, err = h.Runtime.Db.Beginx()
|
||||
if err != nil {
|
||||
|
@ -424,16 +451,22 @@ func (h *Handler) recordSearchActivity(ctx domain.RequestContext, q []search.Que
|
|||
}
|
||||
|
||||
for i := range q {
|
||||
err = h.Store.Activity.RecordUserActivity(ctx, activity.UserActivity{
|
||||
LabelID: q[i].SpaceID,
|
||||
DocumentID: q[i].DocumentID,
|
||||
SourceType: activity.SourceTypeSearch,
|
||||
ActivityType: activity.TypeSearched})
|
||||
if _, isExisting := prev[q[i].DocumentID]; !isExisting {
|
||||
err = h.Store.Activity.RecordUserActivity(ctx, activity.UserActivity{
|
||||
LabelID: q[i].SpaceID,
|
||||
DocumentID: q[i].DocumentID,
|
||||
Metadata: keywords,
|
||||
SourceType: activity.SourceTypeSearch,
|
||||
ActivityType: activity.TypeSearched})
|
||||
|
||||
if err != nil {
|
||||
ctx.Transaction.Rollback()
|
||||
h.Runtime.Log.Error(method, err)
|
||||
if err != nil {
|
||||
ctx.Transaction.Rollback()
|
||||
h.Runtime.Log.Error(method, err)
|
||||
}
|
||||
|
||||
prev[q[i].DocumentID] = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ctx.Transaction.Commit()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue