config.yaml 5.33 KB
# Customer1 Configuration
# Test customer for cross-border e-commerce search

customer_name: "Customer1 Test Instance"

# MySQL Database Configuration
mysql_config:
  host: "120.79.247.228"
  port: 3316
  database: "saas"
  username: "saas"
  password: "P89cZHS5d7dFyc9R"

# Table Configuration
main_table: "shoplazza_product_sku"
extension_table: "customer1_extension"

# Elasticsearch Index
es_index_name: "search_customer1"

# ES Index Settings
es_settings:
  number_of_shards: 1
  number_of_replicas: 0
  refresh_interval: "30s"

# Field Definitions
fields:
  # Primary Key
  - name: "skuId"
    type: "LONG"
    source_table: "main"
    source_column: "id"
    required: true
    index: true
    store: true

  # Text Fields - Multi-language
  - name: "name"
    type: "TEXT"
    source_table: "extension"
    source_column: "name"
    analyzer: "chinese_ecommerce"
    boost: 2.0
    index: true
    store: true

  - name: "name_pinyin"
    type: "TEXT"
    source_table: "extension"
    source_column: "name_pinyin"
    analyzer: "standard"
    boost: 1.5
    index: true
    store: false

  - name: "ruSkuName"
    type: "TEXT"
    source_table: "extension"
    source_column: "ruSkuName"
    analyzer: "russian"
    boost: 2.0
    index: true
    store: true

  - name: "enSpuName"
    type: "TEXT"
    source_table: "extension"
    source_column: "enSpuName"
    analyzer: "english"
    boost: 2.0
    index: true
    store: true

  # Category and Brand
  - name: "categoryName"
    type: "TEXT"
    source_table: "extension"
    source_column: "categoryName"
    analyzer: "chinese_ecommerce"
    boost: 1.5
    index: true
    store: true

  - name: "brandName"
    type: "TEXT"
    source_table: "extension"
    source_column: "brandName"
    analyzer: "chinese_ecommerce"
    boost: 1.5
    index: true
    store: true

  - name: "supplierName"
    type: "TEXT"
    source_table: "extension"
    source_column: "supplierName"
    analyzer: "chinese_ecommerce"
    boost: 1.0
    index: true
    store: true

  # Keyword Fields
  - name: "categoryName_keyword"
    type: "KEYWORD"
    source_table: "extension"
    source_column: "categoryName"
    index: true
    store: false

  - name: "brandName_keyword"
    type: "KEYWORD"
    source_table: "extension"
    source_column: "brandName"
    index: true
    store: false

  - name: "supplierName_keyword"
    type: "KEYWORD"
    source_table: "extension"
    source_column: "supplierName"
    index: true
    store: false

  # Price Fields
  - name: "price"
    type: "DOUBLE"
    source_table: "extension"
    source_column: "price"
    index: true
    store: true

  # Text Embedding Fields
  - name: "name_embedding"
    type: "TEXT_EMBEDDING"
    source_table: "extension"
    source_column: "name"
    embedding_dims: 1024
    embedding_similarity: "dot_product"
    index: true

  - name: "enSpuName_embedding"
    type: "TEXT_EMBEDDING"
    source_table: "extension"
    source_column: "enSpuName"
    embedding_dims: 1024
    embedding_similarity: "dot_product"
    index: true

  # Image Fields
  - name: "imageUrl"
    type: "KEYWORD"
    source_table: "extension"
    source_column: "imageUrl"
    index: true
    store: true

  - name: "image_embedding"
    type: "IMAGE_EMBEDDING"
    source_table: "extension"
    source_column: "imageUrl"
    embedding_dims: 1024
    embedding_similarity: "dot_product"
    nested: false
    index: true

  # Metadata Fields
  - name: "create_time"
    type: "DATE"
    source_table: "extension"
    source_column: "create_time"
    index: true
    store: true

  - name: "days_since_last_update"
    type: "INT"
    source_table: "extension"
    source_column: "days_since_last_update"
    index: true
    store: true

# Index Structure (Query Domains)
indexes:
  - name: "default"
    label: "默认索引"
    fields:
      - "name"
      - "enSpuName"
      - "ruSkuName"
      - "categoryName"
      - "brandName"
    analyzer: "chinese_ecommerce"
    boost: 1.0
    example: 'query=default:"消防套"'
    language_field_mapping:
      zh:
        - "name"
        - "categoryName"
        - "brandName"
      en:
        - "enSpuName"
      ru:
        - "ruSkuName"

  - name: "title"
    label: "标题索引"
    fields:
      - "name"
      - "enSpuName"
      - "ruSkuName"
    analyzer: "chinese_ecommerce"
    boost: 2.0
    example: 'query=title:"芭比娃娃"'
    language_field_mapping:
      zh:
        - "name"
      en:
        - "enSpuName"
      ru:
        - "ruSkuName"

  - name: "category"
    label: "类目索引"
    fields:
      - "categoryName"
    analyzer: "chinese_ecommerce"
    boost: 1.5
    example: 'query=category:"玩具"'

  - name: "brand"
    label: "品牌索引"
    fields:
      - "brandName"
    analyzer: "chinese_ecommerce"
    boost: 1.5
    example: 'query=brand:"ZHU LIN"'

# Query Configuration
query_config:
  supported_languages:
    - "zh"
    - "en"
    - "ru"
  default_language: "zh"
  enable_translation: true
  enable_text_embedding: true
  enable_query_rewrite: true

  # Translation API (DeepL)
  translation_service: "deepl"
  translation_api_key: null  # Set via environment variable

# Ranking Configuration
ranking:
  expression: "bm25() + 0.2*text_embedding_relevance()"
  description: "BM25 text relevance combined with semantic embedding similarity"

# SPU Aggregation (disabled for customer1)
spu_config:
  enabled: false
  spu_field: null
  inner_hits_size: 3