Analizzatore standard
L'analizzatore standard è l'analizzatore predefinito di Milvus, che viene applicato automaticamente ai campi di testo se non viene specificato alcun analizzatore. Utilizza una tokenizzazione basata sulla grammatica, che lo rende efficace per la maggior parte delle lingue.
L'analizzatore standard è adatto alle lingue che si basano su separatori (come spazi e punteggiatura) per delimitare le parole. Tuttavia, lingue come il cinese, il giapponese e il coreano richiedono una tokenizzazione basata su dizionari. In questi casi, l'uso di un analizzatore specifico per la lingua come chinese o analizzatori personalizzati con tokenizzatori specializzati (come ad esempio lindera, icu) e filtri per garantire una tokenizzazione accurata e risultati di ricerca migliori.
Definizione
L'analizzatore standard è composto da:
Tokenizzatore: Utilizza il tokenizer di
standardper suddividere il testo in unità di parole discrete in base alle regole grammaticali. Per ulteriori informazioni, fare riferimento a Tokenizer standard.Filtro: Utilizza il filtro di
lowercaseper convertire tutti i token in minuscolo, consentendo ricerche senza distinzione di maiuscole e minuscole. Per ulteriori informazioni, consultare 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 necessari.
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 stop words, che saranno rimosse dalla tokenizzazione. L'impostazione predefinita è |
Esempio di configurazione di stop word 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 quando si definisce uno schema di raccolta. 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 l'esempio di utilizzo.
Esempi
Prima di applicare la configurazione dell'analizzatore allo schema di raccolta, verificarne il comportamento con 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 con 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']