fields

package
v1.0.6 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetFieldTypeMetadata

func GetFieldTypeMetadata(fieldType ExtendedFieldType) map[string]interface{}

GetFieldTypeMetadata returns metadata for a field type

func IsValidFieldType

func IsValidFieldType(fieldType string) bool

IsValidFieldType checks if a field type is valid

Types

type ArrayTransformer

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

ArrayTransformer processes array fields

func NewArrayTransformer

func NewArrayTransformer(elementTransformer FieldTransformer) *ArrayTransformer

NewArrayTransformer creates a new array transformer

func (*ArrayTransformer) SetDeduplication

func (at *ArrayTransformer) SetDeduplication(enabled bool)

SetDeduplication enables or disables item deduplication

func (*ArrayTransformer) SetMaxItems

func (at *ArrayTransformer) SetMaxItems(max int)

SetMaxItems sets the maximum number of items

func (*ArrayTransformer) TargetType

func (at *ArrayTransformer) TargetType() string

TargetType returns the target type

func (*ArrayTransformer) Transform

func (at *ArrayTransformer) Transform(value interface{}) interface{}

Transform processes an array of values

type BaseFieldExtractor

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

BaseFieldExtractor provides common functionality

func (*BaseFieldExtractor) Confidence

func (bfe *BaseFieldExtractor) Confidence() float64

Confidence returns the extraction confidence

func (*BaseFieldExtractor) Name

func (bfe *BaseFieldExtractor) Name() string

Name returns the extractor name

func (*BaseFieldExtractor) Type

Type returns the field type

type CategoryExtractor

type CategoryExtractor struct {
	BaseFieldExtractor
	// contains filtered or unexported fields
}

CategoryExtractor extracts article categories

func NewCategoryExtractor

func NewCategoryExtractor() *CategoryExtractor

NewCategoryExtractor creates a new category extractor

func (*CategoryExtractor) Extract

func (ce *CategoryExtractor) Extract(data interface{}) interface{}

Extract extracts categories from various data sources

type CategoryField

type CategoryField struct {
	Primary    string   `json:"primary"`
	Secondary  []string `json:"secondary,omitempty"`
	Confidence float64  `json:"confidence"`
}

CategoryField represents article categories

type ChainTransformer

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

ChainTransformer chains multiple transformers together

func NewChainTransformer

func NewChainTransformer(transformers ...FieldTransformer) *ChainTransformer

NewChainTransformer creates a new chain transformer

func (*ChainTransformer) TargetType

func (ct *ChainTransformer) TargetType() string

TargetType returns the target type of the last transformer

func (*ChainTransformer) Transform

func (ct *ChainTransformer) Transform(value interface{}) interface{}

Transform applies all transformers in sequence

type DateTransformer

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

DateTransformer parses and normalizes date fields

func NewDateTransformer

func NewDateTransformer() *DateTransformer

NewDateTransformer creates a new date transformer

func NewDateTransformerWithFormat

func NewDateTransformerWithFormat(format string) *DateTransformer

NewDateTransformerWithFormat creates a date transformer with custom output format

func (*DateTransformer) TargetType

func (dt *DateTransformer) TargetType() string

TargetType returns the target type

func (*DateTransformer) Transform

func (dt *DateTransformer) Transform(value interface{}) interface{}

Transform parses and formats a date

type EntityField

type EntityField struct {
	Text       string  `json:"text"`
	Type       string  `json:"type"` // "PERSON", "ORGANIZATION", "LOCATION", etc.
	Confidence float64 `json:"confidence"`
	StartPos   int     `json:"start_pos"`
	EndPos     int     `json:"end_pos"`
	URL        string  `json:"url,omitempty"` // Knowledge base URL if available
}

EntityField represents named entities

type ExtendedFieldType

type ExtendedFieldType string

ExtendedFieldType represents different types of extended fields

const (
	FieldTypeCategory        ExtendedFieldType = "category"
	FieldTypeTags            ExtendedFieldType = "tags"
	FieldTypeRelatedArticles ExtendedFieldType = "related_articles"
	FieldTypeSentiment       ExtendedFieldType = "sentiment"
	FieldTypeReadingTime     ExtendedFieldType = "reading_time"
	FieldTypeLanguage        ExtendedFieldType = "language"
	FieldTypeKeywords        ExtendedFieldType = "keywords"
	FieldTypeEntities        ExtendedFieldType = "entities"
)

func (ExtendedFieldType) String

func (eft ExtendedFieldType) String() string

String returns a string representation of ExtendedFieldType

type FieldExtractor

type FieldExtractor interface {
	Extract(data interface{}) interface{}
	Type() ExtendedFieldType
	Name() string
	Confidence() float64
}

FieldExtractor interface for extended field extraction

type FieldTransformer

type FieldTransformer interface {
	Transform(value interface{}) interface{}
	TargetType() string
}

FieldTransformer converts extracted data to standard formats

type JSONTransformer

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

JSONTransformer handles structured JSON data

func NewJSONTransformer

func NewJSONTransformer() *JSONTransformer

NewJSONTransformer creates a new JSON transformer

func (*JSONTransformer) AddFieldMapping

func (jt *JSONTransformer) AddFieldMapping(fieldName string, transformer FieldTransformer)

AddFieldMapping adds a transformer for a specific field

func (*JSONTransformer) TargetType

func (jt *JSONTransformer) TargetType() string

TargetType returns the target type

func (*JSONTransformer) Transform

func (jt *JSONTransformer) Transform(value interface{}) interface{}

Transform processes structured data

type KeywordField

type KeywordField struct {
	Term      string  `json:"term"`
	Frequency int     `json:"frequency"`
	Weight    float64 `json:"weight"`
	Position  string  `json:"position"` // "title", "content", "meta"
	TFIDF     float64 `json:"tf_idf"`
}

KeywordField represents extracted keywords

type LanguageField

type LanguageField struct {
	Code       string  `json:"code"` // ISO 639-1 code (e.g., "en", "fr")
	Name       string  `json:"name"` // Full language name
	Confidence float64 `json:"confidence"`
	Script     string  `json:"script,omitempty"` // Writing script (Latin, Cyrillic, etc.)
}

LanguageField represents detected language

type ReadingTimeField

type ReadingTimeField struct {
	Minutes    int     `json:"minutes"`
	Seconds    int     `json:"seconds"`
	WordCount  int     `json:"word_count"`
	ReadingWPM int     `json:"reading_wpm"` // Words per minute
	Confidence float64 `json:"confidence"`
}

ReadingTimeField represents estimated reading time

type RelatedArticle

type RelatedArticle struct {
	Title       string     `json:"title"`
	URL         string     `json:"url"`
	Excerpt     string     `json:"excerpt,omitempty"`
	PublishDate *time.Time `json:"publish_date,omitempty"`
	Similarity  float64    `json:"similarity"`
	Source      string     `json:"source"` // "internal", "external", "suggested"
}

RelatedArticle represents a related article

type RelatedArticlesExtractor

type RelatedArticlesExtractor struct {
	BaseFieldExtractor
}

RelatedArticlesExtractor extracts related articles

func NewRelatedArticlesExtractor

func NewRelatedArticlesExtractor() *RelatedArticlesExtractor

NewRelatedArticlesExtractor creates a new related articles extractor

func (*RelatedArticlesExtractor) Extract

func (rae *RelatedArticlesExtractor) Extract(data interface{}) interface{}

Extract extracts related articles from structured data

type SentimentField

type SentimentField struct {
	Score      float64 `json:"score"`     // -1.0 to 1.0
	Label      string  `json:"label"`     // "positive", "negative", "neutral"
	Magnitude  float64 `json:"magnitude"` // 0.0 to 1.0
	Confidence float64 `json:"confidence"`
}

SentimentField represents content sentiment analysis

type StringTransformer

type StringTransformer struct{}

StringTransformer normalizes string fields

func NewStringTransformer

func NewStringTransformer() *StringTransformer

NewStringTransformer creates a new string transformer

func (*StringTransformer) TargetType

func (st *StringTransformer) TargetType() string

TargetType returns the target type

func (*StringTransformer) Transform

func (st *StringTransformer) Transform(value interface{}) interface{}

Transform normalizes a string value

type TagField

type TagField struct {
	Name       string  `json:"name"`
	Weight     float64 `json:"weight"`
	Source     string  `json:"source"` // "extracted", "meta", "content"
	Normalized string  `json:"normalized"`
}

TagField represents article tags

type TagsExtractor

type TagsExtractor struct {
	BaseFieldExtractor
	// contains filtered or unexported fields
}

TagsExtractor extracts and normalizes article tags

func NewTagsExtractor

func NewTagsExtractor() *TagsExtractor

NewTagsExtractor creates a new tags extractor

func (*TagsExtractor) Extract

func (te *TagsExtractor) Extract(data interface{}) interface{}

Extract extracts and normalizes tags

type URLTransformer

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

URLTransformer resolves and normalizes URL fields

func NewURLTransformer

func NewURLTransformer(baseURL string) *URLTransformer

NewURLTransformer creates a new URL transformer with base URL for relative resolution

func (*URLTransformer) TargetType

func (ut *URLTransformer) TargetType() string

TargetType returns the target type

func (*URLTransformer) Transform

func (ut *URLTransformer) Transform(value interface{}) interface{}

Transform resolves and normalizes a URL

Jump to

Keyboard shortcuts

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