1
0
Fork 0
golang-github-meilisearch-m.../index_search.go
Daniel Baumann 5d4914ed7f
Adding upstream version 0.31.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-18 21:42:39 +02:00

132 lines
3.3 KiB
Go

package meilisearch
import (
"context"
"encoding/json"
"net/http"
)
func (i *index) Search(query string, request *SearchRequest) (*SearchResponse, error) {
return i.SearchWithContext(context.Background(), query, request)
}
func (i *index) SearchWithContext(ctx context.Context, query string, request *SearchRequest) (*SearchResponse, error) {
if request == nil {
return nil, ErrNoSearchRequest
}
if query != "" {
request.Query = query
}
if request.IndexUID != "" {
request.IndexUID = ""
}
request.validate()
resp := new(SearchResponse)
req := &internalRequest{
endpoint: "/indexes/" + i.uid + "/search",
method: http.MethodPost,
contentType: contentTypeJSON,
withRequest: request,
withResponse: resp,
acceptedStatusCodes: []int{http.StatusOK},
functionName: "Search",
}
if err := i.client.executeRequest(ctx, req); err != nil {
return nil, err
}
return resp, nil
}
func (i *index) SearchRaw(query string, request *SearchRequest) (*json.RawMessage, error) {
return i.SearchRawWithContext(context.Background(), query, request)
}
func (i *index) SearchRawWithContext(ctx context.Context, query string, request *SearchRequest) (*json.RawMessage, error) {
if request == nil {
return nil, ErrNoSearchRequest
}
if query != "" {
request.Query = query
}
if request.IndexUID != "" {
request.IndexUID = ""
}
request.validate()
resp := new(json.RawMessage)
req := &internalRequest{
endpoint: "/indexes/" + i.uid + "/search",
method: http.MethodPost,
contentType: contentTypeJSON,
withRequest: request,
withResponse: resp,
acceptedStatusCodes: []int{http.StatusOK},
functionName: "SearchRaw",
}
if err := i.client.executeRequest(ctx, req); err != nil {
return nil, err
}
return resp, nil
}
func (i *index) FacetSearch(request *FacetSearchRequest) (*json.RawMessage, error) {
return i.FacetSearchWithContext(context.Background(), request)
}
func (i *index) FacetSearchWithContext(ctx context.Context, request *FacetSearchRequest) (*json.RawMessage, error) {
if request == nil {
return nil, ErrNoFacetSearchRequest
}
resp := new(json.RawMessage)
req := &internalRequest{
endpoint: "/indexes/" + i.uid + "/facet-search",
method: http.MethodPost,
contentType: contentTypeJSON,
withRequest: request,
withResponse: resp,
acceptedStatusCodes: []int{http.StatusOK},
functionName: "FacetSearch",
}
if err := i.client.executeRequest(ctx, req); err != nil {
return nil, err
}
return resp, nil
}
func (i *index) SearchSimilarDocuments(param *SimilarDocumentQuery, resp *SimilarDocumentResult) error {
return i.SearchSimilarDocumentsWithContext(context.Background(), param, resp)
}
func (i *index) SearchSimilarDocumentsWithContext(ctx context.Context, param *SimilarDocumentQuery, resp *SimilarDocumentResult) error {
req := &internalRequest{
endpoint: "/indexes/" + i.uid + "/similar",
method: http.MethodPost,
withRequest: param,
withResponse: resp,
acceptedStatusCodes: []int{http.StatusOK},
functionName: "SearchSimilarDocuments",
contentType: contentTypeJSON,
}
if err := i.client.executeRequest(ctx, req); err != nil {
return err
}
return nil
}