This is an automated email from the ASF dual-hosted git repository.
linkinstar pushed a commit to branch feat/1.4.2/tag
in repository https://gitbox.apache.org/repos/asf/incubator-answer.git
The following commit(s) were added to refs/heads/feat/1.4.2/tag by this push:
new c39fd896 fix(search): fix the wrong offset when searching
c39fd896 is described below
commit c39fd89675fe35aef3523738d6572373ba16f58d
Author: LinkinStars <[email protected]>
AuthorDate: Mon Nov 18 16:05:01 2024 +0800
fix(search): fix the wrong offset when searching
---
internal/repo/search_common/search_repo.go | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/internal/repo/search_common/search_repo.go
b/internal/repo/search_common/search_repo.go
index cd7de696..1c4f04ab 100644
--- a/internal/repo/search_common/search_repo.go
+++ b/internal/repo/search_common/search_repo.go
@@ -99,7 +99,7 @@ func NewSearchRepo(
}
// SearchContents search question and answer data
-func (sr *searchRepo) SearchContents(ctx context.Context, words []string,
tagIDs [][]string, userID string, votes int, page, size int, order string)
(resp []*schema.SearchResult, total int64, err error) {
+func (sr *searchRepo) SearchContents(ctx context.Context, words []string,
tagIDs [][]string, userID string, votes int, page, pageSize int, order string)
(resp []*schema.SearchResult, total int64, err error) {
words = filterWords(words)
var (
@@ -206,7 +206,8 @@ func (sr *searchRepo) SearchContents(ctx context.Context,
words []string, tagIDs
return
}
- querySQL, _, err := builder.MySQL().Select("*").From(sql,
"t").OrderBy(sr.parseOrder(ctx, order)).Limit(size, page-1).ToSQL()
+ startNum := (page - 1) * pageSize
+ querySQL, _, err := builder.MySQL().Select("*").From(sql,
"t").OrderBy(sr.parseOrder(ctx, order)).Limit(pageSize, startNum).ToSQL()
if err != nil {
return
}
@@ -241,7 +242,7 @@ func (sr *searchRepo) SearchContents(ctx context.Context,
words []string, tagIDs
}
// SearchQuestions search question data
-func (sr *searchRepo) SearchQuestions(ctx context.Context, words []string,
tagIDs [][]string, notAccepted bool, views, answers int, page, size int, order
string) (resp []*schema.SearchResult, total int64, err error) {
+func (sr *searchRepo) SearchQuestions(ctx context.Context, words []string,
tagIDs [][]string, notAccepted bool, views, answers int, page, pageSize int,
order string) (resp []*schema.SearchResult, total int64, err error) {
words = filterWords(words)
var (
qfs = qFields
@@ -320,7 +321,8 @@ func (sr *searchRepo) SearchQuestions(ctx context.Context,
words []string, tagID
return
}
- querySQL, _, err := b.OrderBy(sr.parseOrder(ctx, order)).Limit(size,
page-1).ToSQL()
+ startNum := (page - 1) * pageSize
+ querySQL, _, err := b.OrderBy(sr.parseOrder(ctx,
order)).Limit(pageSize, startNum).ToSQL()
if err != nil {
return
}
@@ -351,7 +353,7 @@ func (sr *searchRepo) SearchQuestions(ctx context.Context,
words []string, tagID
}
// SearchAnswers search answer data
-func (sr *searchRepo) SearchAnswers(ctx context.Context, words []string,
tagIDs [][]string, accepted bool, questionID string, page, size int, order
string) (resp []*schema.SearchResult, total int64, err error) {
+func (sr *searchRepo) SearchAnswers(ctx context.Context, words []string,
tagIDs [][]string, accepted bool, questionID string, page, pageSize int, order
string) (resp []*schema.SearchResult, total int64, err error) {
words = filterWords(words)
var (
@@ -415,7 +417,8 @@ func (sr *searchRepo) SearchAnswers(ctx context.Context,
words []string, tagIDs
return
}
- querySQL, _, err := b.OrderBy(sr.parseOrder(ctx, order)).Limit(size,
page-1).ToSQL()
+ startNum := (page - 1) * pageSize
+ querySQL, _, err := b.OrderBy(sr.parseOrder(ctx,
order)).Limit(pageSize, startNum).ToSQL()
if err != nil {
return
}