Analizzatore predefinito
L'analizzatore " standard " è l'analizzatore predefinito in Milvus, che viene applicato automaticamente ai campi di testo se non viene specificato alcun analizzatore. Combina il tokenizzatore standard con il filtro per il passaggio alle minuscole.
L'analizzatore " standard " è adatto alle lingue che utilizzano separatori (come spazi e segni di punteggiatura) per definire i confini delle parole. Tuttavia, lingue come il cinese, l'arabo, il thailandese, il giapponese e il coreano richiedono una tokenizzazione o una normalizzazione specifica per la lingua. In questi casi, utilizzare un analizzatore specifico per la lingua, come chinese, arabic, oppure thai, oppure analizzatori personalizzati con tokenizzatori specializzati come lindera e icu.
Definizione
L’analizzatore standard è costituito da:
Tokenizzatore: utilizza il tokenizzatore "
standard" per mantenere le lettere Unicode e i caratteri numerici consecutivi all’interno dei token e per effettuare la suddivisione in presenza di altri caratteri. Per le regole esatte relative ai caratteri, consultare la sezione " Tokenizzatore standard".Filtro: utilizza il filtro "
lowercase" per convertire tutti i token in minuscolo, consentendo ricerche che non distinguono tra maiuscole e minuscole. Per ulteriori informazioni, consultare la sezione "Minuscolo".
La funzionalità dell’analizzatore ` standard ` è equivalente alla seguente configurazione di analizzatore personalizzato:
analyzer_params = {
"tokenizer": "standard",
"filter": ["lowercase"]
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "standard");
analyzerParams.put("filter", Collections.singletonList("lowercase"));
const analyzer_params = {
"tokenizer": "standard",
"filter": ["lowercase"]
};
analyzerParams := map[string]any{"tokenizer": "standard", "filter": []any{"lowercase"}}
# restful
analyzerParams='{
"tokenizer": "standard",
"filter": [
"lowercase"
]
}'
Configurazione
Per applicare l’analizzatore “ standard ” a un campo, è sufficiente impostare ` type ` su ` standard ` in ` analyzer_params` e includere i parametri opzionali secondo necessità.
analyzer_params = {
"type": "standard", # Specifies the standard analyzer type
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("type", "standard");
const analyzer_params = {
"type": "standard", // Specifies the standard analyzer type
}
analyzerParams = map[string]any{"type": "standard"}
# restful
analyzerParams='{
"type": "standard"
}'
L’analizzatore standard accetta i seguenti parametri opzionali:
Parametro |
Descrizione |
|---|---|
|
Un array contenente un elenco di parole da escludere, che verranno rimosse dalla tokenizzazione. Il valore predefinito è |
Esempio di configurazione delle parole di stop personalizzate:
analyzer_params = {
"type": "standard", # Specifies the standard analyzer type
"stop_words", ["of"] # Optional: List of words to exclude from tokenization
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("type", "standard");
analyzerParams.put("stop_words", Collections.singletonList("of"));
analyzer_params = {
"type": "standard", // Specifies the standard analyzer type
"stop_words", ["of"] // Optional: List of words to exclude from tokenization
}
analyzerParams = map[string]any{"type": "standard", "stop_words": []string{"of"}}
# restful
Dopo aver definito analyzer_params, è possibile applicarle a un campo VARCHAR durante la definizione dello schema di una collezione. Ciò consente a Milvus di elaborare il testo in quel campo utilizzando l'analizzatore specificato per una tokenizzazione e un filtraggio efficienti. Per ulteriori informazioni, consultare Esempio di utilizzo.
Esempi
Prima di applicare la configurazione dell’analizzatore allo schema della collezione, verificarne il comportamento utilizzando il metodo run_analyzer.
Configurazione dell’analizzatore
analyzer_params = {
"type": "standard", # Standard analyzer configuration
"stop_words": ["for"] # Optional: Custom stop words parameter
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("type", "standard");
analyzerParams.put("stop_words", Collections.singletonList("for"));
// javascript
analyzerParams = map[string]any{"type": "standard", "stop_words": []string{"for"}}
# restful
analyzerParams='{
"type": "standard",
"stop_words": [
"of"
]
}'
Verifica tramite run_analyzer
from pymilvus import (
MilvusClient,
)
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
# Sample text to analyze
sample_text = "The Milvus vector database is built for scale!"
# Run the standard analyzer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Standard 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")
.token("root:Milvus")
.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"
"encoding/json"
"fmt"
"github.com/milvus-io/milvus/client/v2/milvusclient"
)
client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
Address: "localhost:19530",
APIKey: "root:Milvus",
})
if err != nil {
fmt.Println(err.Error())
// handle error
}
bs, _ := json.Marshal(analyzerParams)
texts := []string{"The Milvus vector database is built for scale!"}
option := milvusclient.NewRunAnalyzerOption(texts).
WithAnalyzerParams(string(bs))
result, err := client.RunAnalyzer(ctx, option)
if err != nil {
fmt.Println(err.Error())
// handle error
}
# restful
Risultato atteso
Standard analyzer output: ['the', 'milvus', 'vector', 'database', 'is', 'built', 'scale']