search

package
v1.29.0 Latest Latest
Warning

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

Go to latest
Published: Dec 31, 2025 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package search provides full-text search capabilities with support for multiple backends including in-memory and external search services.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Document

type Document struct {
	ID        string                 `json:"id"`
	Index     string                 `json:"index"`
	Type      string                 `json:"type,omitempty"`
	Title     string                 `json:"title"`
	Content   string                 `json:"content"`
	Tags      []string               `json:"tags,omitempty"`
	Metadata  map[string]interface{} `json:"metadata,omitempty"`
	Timestamp time.Time              `json:"timestamp"`
	Score     float64                `json:"score,omitempty"`
}

Document represents a searchable document

type Engine

type Engine interface {
	// Index adds or updates a document
	Index(ctx context.Context, doc Document) error

	// Search performs a search query
	Search(ctx context.Context, query Query) (*Results, error)

	// Delete removes a document
	Delete(ctx context.Context, id string) error

	// DeleteIndex removes all documents from an index
	DeleteIndex(ctx context.Context, index string) error

	// GetDocument retrieves a document by ID
	GetDocument(ctx context.Context, id string) (*Document, error)

	// UpdateDocument partially updates a document
	UpdateDocument(ctx context.Context, id string, updates map[string]interface{}) error
}

Engine defines the search engine interface

type FacetItem

type FacetItem struct {
	Value string `json:"value"`
	Count int    `json:"count"`
}

FacetItem represents a facet value and count

type InMemoryEngine

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

InMemoryEngine implements an in-memory search engine

func NewInMemoryEngine

func NewInMemoryEngine() *InMemoryEngine

NewInMemoryEngine creates a new in-memory search engine

func (*InMemoryEngine) Delete

func (e *InMemoryEngine) Delete(ctx context.Context, id string) error

Delete removes a document

func (*InMemoryEngine) DeleteIndex

func (e *InMemoryEngine) DeleteIndex(ctx context.Context, index string) error

DeleteIndex removes all documents from an index

func (*InMemoryEngine) GetDocument

func (e *InMemoryEngine) GetDocument(ctx context.Context, id string) (*Document, error)

GetDocument retrieves a document by ID

func (*InMemoryEngine) Index

func (e *InMemoryEngine) Index(ctx context.Context, doc Document) error

Index adds or updates a document

func (*InMemoryEngine) Search

func (e *InMemoryEngine) Search(ctx context.Context, query Query) (*Results, error)

Search performs a search query

func (*InMemoryEngine) UpdateDocument

func (e *InMemoryEngine) UpdateDocument(ctx context.Context, id string, updates map[string]interface{}) error

UpdateDocument partially updates a document

type Query

type Query struct {
	Text      string                 `json:"text"`
	Index     string                 `json:"index,omitempty"`
	Type      string                 `json:"type,omitempty"`
	Tags      []string               `json:"tags,omitempty"`
	Filters   map[string]interface{} `json:"filters,omitempty"`
	From      int                    `json:"from"`
	Size      int                    `json:"size"`
	Sort      []SortField            `json:"sort,omitempty"`
	Highlight bool                   `json:"highlight"`
	Facets    []string               `json:"facets,omitempty"`
}

Query represents a search query

type QueryBuilder

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

QueryBuilder helps construct search queries

func NewQueryBuilder

func NewQueryBuilder(text string) *QueryBuilder

NewQueryBuilder creates a new query builder

func (*QueryBuilder) Build

func (qb *QueryBuilder) Build() Query

Build returns the constructed query

func (*QueryBuilder) WithFacets

func (qb *QueryBuilder) WithFacets(fields ...string) *QueryBuilder

WithFacets adds facet fields

func (*QueryBuilder) WithHighlight

func (qb *QueryBuilder) WithHighlight() *QueryBuilder

WithHighlight enables highlighting

func (*QueryBuilder) WithIndex

func (qb *QueryBuilder) WithIndex(index string) *QueryBuilder

WithIndex sets the index to search

func (*QueryBuilder) WithPagination

func (qb *QueryBuilder) WithPagination(from, size int) *QueryBuilder

WithPagination sets pagination parameters

func (*QueryBuilder) WithSort

func (qb *QueryBuilder) WithSort(field, order string) *QueryBuilder

WithSort adds sorting criteria

func (*QueryBuilder) WithTags

func (qb *QueryBuilder) WithTags(tags ...string) *QueryBuilder

WithTags sets tags to filter

func (*QueryBuilder) WithType

func (qb *QueryBuilder) WithType(docType string) *QueryBuilder

WithType sets the document type to filter

type Results

type Results struct {
	Total  int                    `json:"total"`
	Hits   []Document             `json:"hits"`
	Facets map[string][]FacetItem `json:"facets,omitempty"`
	Took   time.Duration          `json:"took"`
	Query  string                 `json:"query"`
}

Results represents search results

type SortField

type SortField struct {
	Field string `json:"field"`
	Order string `json:"order"` // "asc" or "desc"
}

SortField defines sorting criteria

Jump to

Keyboard shortcuts

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