Tablestore SDK for Python kullanarak bir arama dizini oluşturun; dizin alanlarını, ön sıralamayı, yaşam süresini (TTL), sanal sütunları ve vurgulamayı yapılandırın.
Önkoşullar
Tablestore SDK for Python öğesini yükleyin ve bir istemci başlatın.
Maksimum sürüm sayısı 1 olarak ayarlanmış bir tablo bulunmalıdır.
Tablo TTL değeri -1 olarak ayarlanmış olmalı veya tablo için
UpdateRowile güncellemeler devre dışı bırakılmış olmalıdır.
Açıklama
Bir tablo için arama dizini oluşturmak üzere create_search_index yöntemini çağırın. Bir tabloda birden fazla arama dizini bulunabilir. İstekte tabloyu, dizin adını ve eksiksiz dizin yapılandırmasını belirtin; sorgulanacak sütunları fields parametresine ekleyin. Dizin alanı türleri, ilgili tablo sütunlarının veri türleriyle eşleşmelidir. Desteklenen türler için bkz. Veri türleri.
create_search_index(table_name, index_name, index_meta)
Arama dizini oluşturma işlemi zaman uyumsuzdur. İstek başarılı olduktan sonra dizini sorgulamadan önce dizin verisi senkronizasyonunun tamamlanmasını bekleyin.
Aşağıdaki örnek, example_table üzerinde Keyword ve Long alanlara sahip example_index adlı bir dizin oluşturur. Ön sıralama ve TTL yapılandırılmazsa dizin birincil anahtara göre sıralanır ve dizin verileri son kullanmaz.
table_name = "example_table"
index_name = "example_index"
fields = [
FieldSchema("category", FieldType.KEYWORD, index=True),
FieldSchema("price", FieldType.LONG, index=True),
]
index_meta = SearchIndexMeta(fields)
client.create_search_index(table_name, index_name, index_meta)
Parametreler
create_search_index aşağıdaki parametreleri kabul eder.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dizin yapılandırması
index_meta parametresi SearchIndexMeta türündedir ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dizin alanları
index_meta.fields[] içindeki her öğe FieldSchema türündedir ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vektör yapılandırması
index_meta.fields[].vector_options parametresi VectorOptions türündedir ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dizin ayarları
index_meta.index_setting parametresi IndexSetting türündedir ve aşağıdaki parametreyi içerir.
|
|
|
|
|
|
|
|
Ön sıralama yapılandırması
index_meta.index_sort parametresi Sort türündedir ve aşağıdaki parametreyi içerir.
|
|
|
|
|
|
|
|
Birincil anahtar sıralaması
index_meta.index_sort.sorters[] içindeki PrimaryKeySort türündeki bir öğe, verileri birincil anahtara göre sıralar ve aşağıdaki parametreyi içerir.
|
|
|
|
|
|
|
|
Alan değeri sıralaması
index_meta.index_sort.sorters[] içindeki FieldSort türündeki bir öğe, verileri alan değerine göre sıralar ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Örnekler
Ön sıralama yapılandırma
Aşağıdaki örnek, dizin verilerini created_at alanına göre artan düzende ön sıralar.
table_name = "example_table"
index_name = "example_index"
fields = [
FieldSchema("category", FieldType.KEYWORD, index=True),
FieldSchema(
"created_at",
FieldType.LONG,
index=True,
enable_sort_and_agg=True,
),
]
index_sort = Sort([FieldSort("created_at", SortOrder.ASC)])
index_meta = SearchIndexMeta(fields, index_sort=index_sort)
client.create_search_index(table_name, index_name, index_meta)
Dizin TTL yapılandırma
Aşağıdaki örnek, dizin TTL değerini 7 gün olarak ayarlar.
table_name = "example_table"
index_name = "example_index"
fields = [
FieldSchema("category", FieldType.KEYWORD, index=True),
FieldSchema("price", FieldType.LONG, index=True),
]
index_meta = SearchIndexMeta(fields, time_to_live=7 * 24 * 60 * 60)
client.create_search_index(table_name, index_name, index_meta)
Belirteçleştirme yapılandırma
Aşağıdaki örnek, Text alanı description için bölme belirteçleştirmesini yapılandırır ve virgülü (,) ayırıcı olarak kullanır.
table_name = "example_table"
index_name = "example_index"
fields = [
FieldSchema("category", FieldType.KEYWORD, index=True),
FieldSchema(
"description",
FieldType.TEXT,
index=True,
analyzer=AnalyzerType.SPLIT,
analyzer_parameter=SplitAnalyzerParameter(","),
),
]
index_meta = SearchIndexMeta(fields)
client.create_search_index(table_name, index_name, index_meta)
Vektör alanı oluşturma
Aşağıdaki örnek, embedding adında dört boyutlu bir Vector alanı oluşturur ve vektör benzerliğini ölçmek için nokta çarpımını kullanır.
table_name = "example_table"
index_name = "example_index"
fields = [
FieldSchema("category", FieldType.KEYWORD, index=True),
FieldSchema(
"embedding",
FieldType.VECTOR,
index=True,
vector_options=VectorOptions(
data_type=VectorDataType.VD_FLOAT_32,
dimension=4,
metric_type=VectorMetricType.VM_DOT_PRODUCT,
),
),
]
index_meta = SearchIndexMeta(fields)
client.create_search_index(table_name, index_name, index_meta)
Sanal sütun oluşturma
Aşağıdaki örnek, Keyword alanı category alanını bir Long sanal sütuna, Long alanı price alanını ise bir Keyword sanal sütuna eşler.
table_name = "example_table"
index_name = "example_index"
fields = [
FieldSchema("category", FieldType.KEYWORD, index=True),
FieldSchema(
"category_as_long",
FieldType.LONG,
index=True,
is_virtual_field=True,
source_fields=["category"],
),
FieldSchema("price", FieldType.LONG, index=True),
FieldSchema(
"price_as_keyword",
FieldType.KEYWORD,
index=True,
is_virtual_field=True,
source_fields=["price"],
),
]
index_meta = SearchIndexMeta(fields)
client.create_search_index(table_name, index_name, index_meta)
Vurgulamayı etkinleştirme
Aşağıdaki örnek, Text alanı description için vurgulamayı etkinleştirir.
table_name = "example_table"
index_name = "example_index"
fields = [
FieldSchema("category", FieldType.KEYWORD, index=True),
FieldSchema("price", FieldType.LONG, index=True),
FieldSchema(
"description",
FieldType.TEXT,
index=True,
enable_highlighting=True,
),
]
index_meta = SearchIndexMeta(fields)
client.create_search_index(table_name, index_name, index_meta)