Documentation
¶
Overview ¶
Package bm25md provides BM25-based search functionality with Markdown field awareness.
This implements a field-weighted variant of the BM25 (Best Matching 25) ranking algorithm that gives different weights to content based on its semantic importance in Markdown documents (headers, bold text, body content, etc.).
The algorithm handles multiple fields, where each field can have its own weight, allowing for more nuanced ranking based on where terms appear in the document structure.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var DefaultFieldWeights = map[Field]float64{ FieldH1: 5.0, FieldH2: 3.0, FieldH3: 2.0, FieldH4: 2.0, FieldH5: 2.0, FieldH6: 2.0, FieldBold: 1.5, FieldItalic: 1.2, FieldCode: 0.8, FieldBody: 1.0, }
DefaultFieldWeights provides sensible default weights for markdown fields
Functions ¶
func DefaultFieldBM25Parameters ¶
func DefaultFieldBM25Parameters() map[Field]BM25Parameters
DefaultFieldBM25Parameters returns field-specific BM25 parameters optimized for each field type
Types ¶
type BM25Parameters ¶
type BM25Parameters struct {
K1 float64 // controls term frequency saturation
B float64 // controls length normalization
}
BM25Parameters holds the tuning parameters for BM25 algorithm
func DefaultBM25Parameters ¶
func DefaultBM25Parameters() BM25Parameters
DefaultBM25Parameters returns recommended BM25 parameters
type Corpus ¶
type Corpus struct {
// contains filtered or unexported fields
}
Corpus manages the BM25md search index for a corpus
func NewCorpus ¶
func NewCorpus(opts ...CorpusOption) *Corpus
NewCorpus creates a new BM25md corpus with optional configuration
func (*Corpus) AddDocument ¶
AddDocument adds a document to the corpus
type CorpusOption ¶
type CorpusOption func(*Corpus)
CorpusOption defines a function that configures a corpus
func WithBM25Params ¶
func WithBM25Params(params BM25Parameters) CorpusOption
WithBM25Params sets custom BM25 parameters for the corpus
func WithFieldParams ¶
func WithFieldParams(fieldParams map[Field]BM25Parameters) CorpusOption
WithFieldParams sets per-field BM25 parameters (BM25F mode)
func WithFieldWeights ¶
func WithFieldWeights(fieldWeights map[Field]float64) CorpusOption
WithFieldWeights sets custom field weights for the corpus
func WithTokenizer ¶
func WithTokenizer(tokenizer Tokenizer) CorpusOption
WithTokenizer sets a custom tokenizer for the corpus
type DefaultTokenizer ¶
type DefaultTokenizer struct{}
DefaultTokenizer implements a basic default tokenizer
func (DefaultTokenizer) Tokenize ¶
func (t DefaultTokenizer) Tokenize(text string) []string
Tokenize implements the Tokenizer interface
type Document ¶
type Document struct {
ID int // document identifier
Fields map[Field]string // content separated by field type
Original string // original document text
}
Document represents a parsed document with field-separated content
type MarkdownFieldParser ¶
type MarkdownFieldParser struct {
// contains filtered or unexported fields
}
MarkdownFieldParser extracts content from markdown documents
func NewMarkdownFieldParser ¶
func NewMarkdownFieldParser() *MarkdownFieldParser
NewMarkdownFieldParser creates new AST-based parser instance
func (*MarkdownFieldParser) ParseDocument ¶
func (p *MarkdownFieldParser) ParseDocument(content string) map[Field]string
ParseDocument extracts field-specific content using AST traversal
func (*MarkdownFieldParser) ParseDocuments ¶
func (p *MarkdownFieldParser) ParseDocuments(contents []string) []Document
ParseDocuments parses multiple markdown documents into BM25md Documents
type SearchResult ¶
SearchResult represents a document with its relevance score
type TokenizerFunc ¶
TokenizerFunc is a func adapter that allows using functions as Tokenizers
func (TokenizerFunc) Tokenize ¶
func (f TokenizerFunc) Tokenize(text string) []string
Tokenize implements the Tokenizer interface for function types