search

package
v0.9.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 13, 2024 License: AGPL-3.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateIndex

func CreateIndex(ctx context.Context, path string,
	storage *searchdb.Storage, log *zerolog.Logger,
) error

func NewService

func NewService(
	ctx context.Context,
	validation *validator.Validate,
	storage *searchdb.Storage,
	indexPath string,
	log *zerolog.Logger,
) mo.Result[*Service]

Types

type Indexer

type Indexer interface {
	CreateIndex(path string) error
}

type Options

type Options struct {
	// Query is the search query used for a text search.
	Query string `json:"query" query:"q" default:""`

	// Sort is the field, that should be sorted by.
	// When left empty, the default sorting is used.
	Sort string `json:"sort" query:"sort" validate:"oneof=score added modified weighed_score review_count"`

	// LocalFirst determines whether the results from the current instance should be
	// preferred over remote results.
	LocalFirst bool `json:"localFirst,omitempty" query:"local_first" default:"true"`

	// SortDescending defines the sort order.
	SortDescending bool `json:"SortDescending" query:"desc" default:"true"`

	// Fuzzy defines whether to use fuzzy or wildcard search.
	Fuzzy bool `json:"fuzzy,omitempty" query:"fuzzy" default:"false"`

	// Page is current page.
	Page uint `json:"page" query:"page" default:"0"`

	// PageSize defines the number of hits returned per page.
	//
	// PageSize is infinite when set to 0 (i.e. infinite scroll).
	PageSize uint `json:"pageSize" query:"pageSize" default:"10" validate:"gte=0,lte=180"`

	// Categories are the categories to search in. By default,
	// a Union category is performed to search in all categories.
	Categories []target.Category `json:"categories" query:"category" validate:"unique,dive" default:"union"`

	// Aggregations is a map of aggregations, to perform aggregations on fields.
	// The provided map key can be used to identify the corresponding bucket in
	// the result.
	Aggregations *[]interface{} `json:"aggregations,omitempty" query:"aggregations,omitempty"`
}

Options defines a set of optional search parameters.

type Service

type Service struct {
	// contains filtered or unexported fields
}

func (*Service) HandleSearch

func (s *Service) HandleSearch(c *fiber.Ctx) error

TODO: add aggregations documentation TODO: make better use of POST support @Summary Perform a search for the given query and options @Description Search for media, users, posts, artists, etc. @Tags search,media,metadata,users,posts,reviews @Param X-CSRF-Token header string false "CSRF token. Required when using POST." @Param q query string false "The search query. Falls back to a wildcard query if not provided." @Param category query string false "The category to search in" Enums(union,users,groups,artists,media,posts,reviews,tags,genres) @Param aggregations query string false "The aggregations to perform on the search results" @Param fuzzy query boolean false "Whether to perform a fuzzy search" @Param sort query string false "The field to sort the results by" Enums(score,added,modified,weighed_score,review_count) @Param desc query boolean false "Whether to sort the results in descending order" @Param page query integer false "The page to return" @Param pageSize query integer false "The number of results to return per page" @Accept json @Router /search [post] @Router /search [get]

func (*Service) RunQuery

func (s *Service) RunQuery(ctx context.Context, opts *Options) (res *bleve.SearchResult, err error)

RunQuery performs a search on the bleve index

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL