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
        }

Reply via email to