sql

package
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2026 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const (
	QueryTypeTerm           = "term"
	QueryTypePhrase         = "phrase"
	QueryTypePhrasePrefix   = "phrase_prefix"
	QueryTypeFuzzy          = "fuzzy"
	QueryTypeRegex          = "regex"
	QueryTypeRange          = "range"
	QueryTypeBoolean        = "boolean"
	QueryTypeDisjunctionMax = "disjunction_max"
	QueryTypeConstScore     = "const_score"
	QueryTypeEmpty          = "empty"
	QueryTypeTermSet        = "term_set"
	QueryTypePrefix         = "prefix"
	QueryTypeWildcard       = "wildcard"
	QueryTypeExists         = "exists"
	QueryTypeNested         = "nested"
)

QueryType 查询类型

Variables

This section is empty.

Functions

func BM25Rank

func BM25Rank(field, query string) string

BM25Rank BM25排名函数 示例: bm25_rank(content, '关键词') AS rank

func BM25Score

func BM25Score(field, query string) string

BM25Score BM25分数函数 示例: bm25_score(content, '关键词') AS score

func FulltextBooleanSQL

func FulltextBooleanSQL(clause BooleanClause, minShouldMatch int, boost float64) string

FulltextBooleanSQL 生成布尔查询SQL

func FulltextBoost

func FulltextBoost(query string, boost float64) string

FulltextBoost 提升查询函数 示例: fulltext_boost(query, 2.0)

func FulltextDisjunctionMax

func FulltextDisjunctionMax(queries []string, tieBreaker, boost float64) string

FulltextDisjunctionMax 析取最大查询函数 示例: fulltext_disjunction_max(ARRAY[q1, q2], tie_breaker=>0.3)

func FulltextExists

func FulltextExists(field string, boost float64) string

FulltextExists 字段存在查询函数 示例: fulltext_exists('field')

func FulltextFuzzy

func FulltextFuzzy(field, term string, distance int, boost float64) string

FulltextFuzzy 模糊查询函数 示例: fulltext_fuzzy('field', 'term', distance=>2)

func FulltextNested

func FulltextNested(path, query string, boost float64) string

FulltextNested 嵌套查询函数(用于JSON字段) 示例: fulltext_nested('metadata', fulltext_term('color', 'red'))

func FulltextPhrase

func FulltextPhrase(field string, terms []string, slop int, boost float64) string

FulltextPhrase 短语查询函数 示例: fulltext_phrase('field', ARRAY['word1', 'word2'], slop=>0)

func FulltextPhrasePrefix

func FulltextPhrasePrefix(field string, terms []string, boost float64) string

FulltextPhrasePrefix 短语前缀查询函数 示例: fulltext_phrase_prefix('field', ARRAY['word1', 'word2'])

func FulltextPrefix

func FulltextPrefix(field, prefix string, boost float64) string

FulltextPrefix 前缀查询函数 示例: fulltext_prefix('field', 'prefix')

func FulltextRange

func FulltextRange(field, min, max string, includeMin, includeMax bool, boost float64) string

FulltextRange 范围查询函数 示例: fulltext_range('field', '2023-01-01', '2024-12-31')

func FulltextRegex

func FulltextRegex(field, pattern string, boost float64) string

FulltextRegex 正则查询函数 示例: fulltext_regex('field', 'pattern')

func FulltextTerm

func FulltextTerm(field, value string, boost float64) string

FulltextTerm 词项查询函数 示例: fulltext_term('field', 'value', boost=>2.0)

func FulltextWildcard

func FulltextWildcard(field, wildcard string, boost float64) string

FulltextWildcard 通配符查询函数 示例: fulltext_wildcard('field', 'prefix*')

func Highlight

func Highlight(field, query, preTag, postTag string) string

Highlight 高亮函数 示例: highlight(content, '关键词', '<mark>', '</mark>')

func HighlightMulti

func HighlightMulti(field, query, preTag, postTag string, numFragments, fragmentLen int) string

HighlightMulti 多片段高亮函数 示例: highlight_multi(content, '关键词', '<mark>', '</mark>', 3, 150)

func HybridRank

func HybridRank(field, vectorField, query, vector string) string

HybridRank 混合排名函数 示例: hybrid_rank(content, embedding, '关键词', '[0.1, 0.2, ...]')

func HybridScore

func HybridScore(ftScore, vecScore string, ftWeight, vecWeight float64) string

HybridScore 混合分数函数 示例: hybrid_score(ft_score, vec_score, ft_weight=>0.7, vec_weight=>0.3)

func RRFRank

func RRFRank(ranks []string, k int) string

RRFRank RRF融合排名函数 示例: rrf_rank(bm25_rank(...), vector_rank(...), k=>60)

func Tokenize

func Tokenize(tokenizer, text string) string

Tokenize 分词函数 示例: fulltext_tokenize('jieba', '永和服装饰品有限公司')

Types

type BooleanClause

type BooleanClause struct {
	Must    []string
	Should  []string
	MustNot []string
}

BooleanClause 布尔查询子句

type FulltextConfig

type FulltextConfig struct {
	Query          string
	EnableHybrid   bool
	FusionStrategy string
	FTWeight       float64
	VecWeight      float64
}

FulltextConfig 查询配置函数 示例: fulltext_config('field:term^2 AND field2:term3')

func NewFulltextConfig

func NewFulltextConfig(query string) *FulltextConfig

NewFulltextConfig 创建查询配置

func (*FulltextConfig) ToSQL

func (c *FulltextConfig) ToSQL() string

ToSQL 生成SQL片段

func (*FulltextConfig) WithHybrid

func (c *FulltextConfig) WithHybrid(strategy string, ftWeight, vecWeight float64) *FulltextConfig

WithHybrid 启用混合搜索

type FulltextField

type FulltextField struct {
	Name       string
	Fast       bool
	Tokenizer  string
	Record     string
	FieldNorms bool
	Boost      float64
}

FulltextField 字段配置函数(SQL函数式配置) 示例: fulltext_field('content', fast=>FALSE, tokenizer=>'jieba')

func NewFulltextField

func NewFulltextField(name string) *FulltextField

NewFulltextField 创建字段配置

func (*FulltextField) ToSQL

func (f *FulltextField) ToSQL() string

ToSQL 生成SQL片段

func (*FulltextField) WithBoost

func (f *FulltextField) WithBoost(boost float64) *FulltextField

WithBoost 设置权重

func (*FulltextField) WithFast

func (f *FulltextField) WithFast(fast bool) *FulltextField

WithFast 设置Fast选项

func (*FulltextField) WithRecord

func (f *FulltextField) WithRecord(record string) *FulltextField

WithRecord 设置记录类型

func (*FulltextField) WithTokenizer

func (f *FulltextField) WithTokenizer(tokenizer string) *FulltextField

WithTokenizer 设置分词器

type FulltextTokenizer

type FulltextTokenizer struct {
	Type          string
	HMM           bool
	SearchMode    bool
	DictPath      string
	StopWordsPath string
	MinGram       int
	MaxGram       int
	PrefixOnly    bool
}

FulltextTokenizer 分词器配置函数 示例: fulltext_tokenizer('jieba', hmm=>TRUE, search=>TRUE)

func NewFulltextTokenizer

func NewFulltextTokenizer(tokenizerType string) *FulltextTokenizer

NewFulltextTokenizer 创建分词器配置

func (*FulltextTokenizer) ToSQL

func (t *FulltextTokenizer) ToSQL() string

ToSQL 生成SQL片段

func (*FulltextTokenizer) WithDict

func (t *FulltextTokenizer) WithDict(path string) *FulltextTokenizer

WithDict 设置词典路径

func (*FulltextTokenizer) WithHMM

func (t *FulltextTokenizer) WithHMM(hmm bool) *FulltextTokenizer

WithHMM 设置HMM

func (*FulltextTokenizer) WithNgram

func (t *FulltextTokenizer) WithNgram(minGram, maxGram int, prefixOnly bool) *FulltextTokenizer

WithNgram 设置N-gram参数

func (*FulltextTokenizer) WithSearchMode

func (t *FulltextTokenizer) WithSearchMode(search bool) *FulltextTokenizer

WithSearchMode 设置搜索模式

func (*FulltextTokenizer) WithStopWords

func (t *FulltextTokenizer) WithStopWords(path string) *FulltextTokenizer

WithStopWords 设置停用词路径

type SQLGenerator

type SQLGenerator struct {
	SelectColumns []string
	FromTable     string
	WhereField    string
	Query         string
	OrderBy       string
	Limit         int
	Offset        int
}

SQLGenerator SQL生成器

func NewSQLGenerator

func NewSQLGenerator(table, field, query string) *SQLGenerator

NewSQLGenerator 创建SQL生成器

func (*SQLGenerator) Build

func (g *SQLGenerator) Build() string

Build 生成SQL

func (*SQLGenerator) BuildWithScore

func (g *SQLGenerator) BuildWithScore() string

BuildWithScore 生成带分数的SQL

func (*SQLGenerator) OrderByScore

func (g *SQLGenerator) OrderByScore(desc bool) *SQLGenerator

OrderByScore 设置按分数排序

func (*SQLGenerator) Paginate

func (g *SQLGenerator) Paginate(limit, offset int) *SQLGenerator

Paginate 设置分页

func (*SQLGenerator) Select

func (g *SQLGenerator) Select(columns ...string) *SQLGenerator

Select 设置查询列

Jump to

Keyboard shortcuts

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