Documentation
¶
Overview ¶
Package search provides full-text search capabilities with support for multiple backends including in-memory and external search services.
Index ¶
- type Document
- type Engine
- type FacetItem
- type InMemoryEngine
- func (e *InMemoryEngine) Delete(ctx context.Context, id string) error
- func (e *InMemoryEngine) DeleteIndex(ctx context.Context, index string) error
- func (e *InMemoryEngine) GetDocument(ctx context.Context, id string) (*Document, error)
- func (e *InMemoryEngine) Index(ctx context.Context, doc Document) error
- func (e *InMemoryEngine) Search(ctx context.Context, query Query) (*Results, error)
- func (e *InMemoryEngine) UpdateDocument(ctx context.Context, id string, updates map[string]interface{}) error
- type Query
- type QueryBuilder
- func (qb *QueryBuilder) Build() Query
- func (qb *QueryBuilder) WithFacets(fields ...string) *QueryBuilder
- func (qb *QueryBuilder) WithHighlight() *QueryBuilder
- func (qb *QueryBuilder) WithIndex(index string) *QueryBuilder
- func (qb *QueryBuilder) WithPagination(from, size int) *QueryBuilder
- func (qb *QueryBuilder) WithSort(field, order string) *QueryBuilder
- func (qb *QueryBuilder) WithTags(tags ...string) *QueryBuilder
- func (qb *QueryBuilder) WithType(docType string) *QueryBuilder
- type Results
- type SortField
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 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 ¶
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) 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