Spasi
Pembagi teks whitespace membagi teks berdasarkan lima karakter spasi kosong ASCII: tab, line feed, form feed, carriage return, dan spasi.
Aturan tokenisasi
Tokenizer whitespace memisahkan teks hanya pada lima karakter spasi kosong ASCII berikut:
| Karakter | Nama | Titik kode Unicode |
|---|---|---|
\t | Tabulasi horizontal | U+0009 |
\n | Pindah baris | U+000A |
\x0C atau \f | Pindah halaman | U+000C |
\r | Kembali gerbong | U+000D |
' ' | Spasi | U+0020 |
Pemisah-pemisah ini diabaikan, dan pemisah yang berurutan tidak menghasilkan token kosong. Tanda baca dan karakter lainnya tetap ada dalam token. Secara khusus, tab vertikal (\x0B, U+000B), spasi anti-pemecahan (\u00A0), dan spasi ideografis (\u3000) tidak memicu pemisahan.
Kumpulan ini mengikuti aturan Rust’s char::is_ascii_whitespace(), yang mengecualikan karakter spasi kosong Unicode lainnya.
Contoh-contoh berikut menggunakan {"tokenizer": "whitespace"} tanpa filter. Masukan dan keluaran menggunakan notasi string Python: urutan escape seperti \t dan \u00A0 mewakili karakter sebenarnya.
| Masukan | Token keluaran |
|---|---|
"a\tb\nc\x0Cd\re f" | ["a", "b", "c", "d", "e", "f"] |
"Hello,World! foo_bar" | ["Hello,World!", "foo_bar"] |
"a\x0Bb" | ["a\x0Bb"] |
"a\u00A0b" | ["a\u00A0b"] |
"a\u3000b" | ["a\u3000b"] |
" a b " | ["a", "b"] |
Konfigurasi
Untuk mengonfigurasi penganalisis menggunakan tokenizer ` whitespace `, atur ` tokenizer ` menjadi ` whitespace ` di ` analyzer_params`.
analyzer_params = {
"tokenizer": "whitespace",
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "whitespace");
const analyzer_params = {
"tokenizer": "whitespace"
};
analyzerParams = map[string]any{"tokenizer": "whitespace"}
# restful
analyzerParams='{
"tokenizer": "whitespace"
}'
Tokenizer spasi kosong dapat bekerja bersama dengan satu atau lebih filter. Misalnya, kode berikut mendefinisikan penganalisis yang menggunakan tokenizer whitespace dan filter lowercase:
analyzer_params = {
"tokenizer": "whitespace",
"filter": ["lowercase"]
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "whitespace");
analyzerParams.put("filter", Collections.singletonList("lowercase"));
const analyzer_params = {
"tokenizer": "whitespace",
"filter": ["lowercase"]
};
analyzerParams = map[string]any{"tokenizer": "whitespace", "filter": []any{"lowercase"}}
# restful
analyzerParams='{
"tokenizer": "whitespace",
"filter": [
"lowercase"
]
}'
Setelah mendefinisikan analyzer_params, Anda dapat menerapkannya ke bidang VARCHAR saat mendefinisikan skema koleksi. Hal ini memungkinkan Milvus memproses teks di bidang tersebut menggunakan penganalisis yang ditentukan untuk tokenisasi dan penyaringan yang efisien. Untuk detailnya, lihat Contoh penggunaan.
Contoh
Sebelum menerapkan konfigurasi penganalisis ke skema koleksi Anda, verifikasi perilakunya menggunakan metode ` run_analyzer `.
Konfigurasi penganalisis
analyzer_params = {
"tokenizer": "whitespace",
"filter": ["lowercase"]
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "whitespace");
analyzerParams.put("filter", Collections.singletonList("lowercase"));
// javascript
analyzerParams = map[string]any{"tokenizer": "whitespace", "filter": []any{"lowercase"}}
# restful
Verifikasi menggunakan run_analyzerCompatible with Milvus 2.5.11+
from pymilvus import (
MilvusClient,
)
client = MilvusClient(uri="http://localhost:19530")
# Sample text to analyze
sample_text = "The Milvus vector database is built for scale!"
# Run the whitespace analyzer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Whitespace analyzer output:", result)
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.vector.request.RunAnalyzerReq;
import io.milvus.v2.service.vector.response.RunAnalyzerResp;
ConnectConfig config = ConnectConfig.builder()
.uri("http://localhost:19530")
.build();
MilvusClientV2 client = new MilvusClientV2(config);
List<String> texts = new ArrayList<>();
texts.add("The Milvus vector database is built for scale!");
RunAnalyzerResp resp = client.runAnalyzer(RunAnalyzerReq.builder()
.texts(texts)
.analyzerParams(analyzerParams)
.build());
List<RunAnalyzerResp.AnalyzerResult> results = resp.getResults();
// javascript
import (
"context"
"fmt"
"github.com/milvus-io/milvus/client/v2/milvusclient"
)
ctx := context.Background()
client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
Address: "localhost:19530",
APIKey: "root:Milvus",
})
if err != nil {
fmt.Println(err.Error())
// handle error
}
texts := []string{"The Milvus vector database is built for scale!"}
option := milvusclient.NewRunAnalyzerOption(texts...).
WithAnalyzerParams(analyzerParams)
result, err := client.RunAnalyzer(ctx, option)
if err != nil {
fmt.Println(err.Error())
// handle error
}
# restful
Hasil yang diharapkan
['the', 'milvus', 'vector', 'database', 'is', 'built', 'for', 'scale!']