Files

111 lines
3.8 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// =============================================================================
// Meilisearch 数据结构定义
// =============================================================================
package meilisearch
// SearchParams 搜索参数
type SearchParams struct {
Query string // 搜索查询字符串
Page int64 // 页码从1开始
Limit int64 // 每页数量
Sort []string // 排序字段,如 ["createdAt:desc", "price:asc"]
Filter string // 过滤条件
SearchableAttributes string // 可搜索字段
AttributesToRetrieve []string // 返回字段
Facets []string // 聚合字段
HitsPerPage int // 每页命中数
ShowRankingScore bool // 是否显示排名分数
}
// SearchResult 搜索结果
type SearchResult struct {
Hits []map[string]interface{} `json:"hits"`
EstimatedTotalHits int64 `json:"estimatedTotalHits"`
Limit int `json:"limit"`
Offset int `json:"offset"`
ProcessingTimeMs int `json:"processingTimeMs"`
Query string `json:"query"`
FacetDistribution map[string]interface{} `json:"facetDistribution,omitempty"`
}
// IndexConfig 索引配置
type IndexConfig struct {
UID string // 索引唯一标识
PrimaryKey string // 主键字段名
}
// IndexSettings 索引设置
type IndexSettings struct {
SearchableAttributes []string `json:"searchableAttributes,omitempty"`
DisplayedAttributes []string `json:"displayedAttributes,omitempty"`
FilterableAttributes []string `json:"filterableAttributes,omitempty"`
SortableAttributes []string `json:"sortableAttributes,omitempty"`
RankingRules []string `json:"rankingRules,omitempty"`
StopWords []string `json:"stopWords,omitempty"`
Synonyms map[string][]string `json:"synonyms,omitempty"`
DistinctAttribute string `json:"distinctAttribute,omitempty"`
TypoTolerance *TypoTolerance `json:"typoTolerance,omitempty"`
Pagination *Pagination `json:"pagination,omitempty"`
Faceting *Faceting `json:"faceting,omitempty"`
}
// TypoTolerance 拼写容错设置
type TypoTolerance struct {
Enabled bool `json:"enabled"`
MinWordSizeForTypos map[string]int `json:"minWordSizeForTypos"`
DisableOnWords []string `json:"disableOnWords"`
DisableOnAttributes []string `json:"disableOnAttributes"`
}
// Pagination 分页设置
type Pagination struct {
MaxTotalHits int `json:"maxTotalHits"`
}
// Faceting 聚合设置
type Faceting struct {
MaxValuesPerFacet int `json:"maxValuesPerFacet"`
}
// TaskResult 任务结果
type TaskResult struct {
TaskUID int64 `json:"taskUid"`
Status string `json:"status"`
Type string `json:"type"`
Details map[string]interface{} `json:"details,omitempty"`
Error string `json:"error,omitempty"`
}
// Document 文档
type Document map[string]interface{}
// 文档操作符
const (
OperatorEquals = "="
OperatorNotEquals = "!="
OperatorGreaterThan = ">"
OperatorGreaterOrEqual = ">="
OperatorLessThan = "<"
OperatorLessOrEqual = "<="
OperatorAnd = "AND"
OperatorOr = "OR"
OperatorNot = "NOT"
)
// 排序顺序
const (
SortAsc = "asc"
SortDesc = "desc"
)
// 排名规则
const (
RankingRuleWords = "words"
RankingRuleTypo = "typo"
RankingRuleProximity = "proximity"
RankingRuleAttribute = "attribute"
RankingRuleSort = "sort"
RankingRuleExactness = "exactness"
)