الطول
يقوم مرشح " length " بإزالة الرموز التي لا تستوفي متطلبات الطول المحددة، مما يتيح لك التحكم في طول الرموز التي يتم الاحتفاظ بها أثناء معالجة النص.
التكوين
يُعد مرشح " length " مرشحًا مخصصًا في Milvus، ويتم تحديده عن طريق تعيين " "type": "length" " في تكوين المرشح. يمكنك تكوينه كقاموس داخل " analyzer_params " لتحديد حدود الطول.
analyzer_params = {
"tokenizer": "standard",
"filter":[{
"type": "length", # Specifies the filter type as length
"max": 10, # Sets the maximum token length to 10 characters
}],
}
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "standard");
analyzerParams.put("filter",
Collections.singletonList(new HashMap<String, Object>() {{
put("type", "length");
put("max", 10);
}}));
analyzerParams := map[string]any{"tokenizer": "standard",
"filter": []any{map[string]any{
"type": "length",
"max": 10,
}}}
let analyzer_params = serde_json::json!({
"tokenizer": "standard",
"filter": [
{
"type": "length",
"max": 10
}
]
});
nlohmann::json analyzer_params = {
{"tokenizer", "standard"},
{"filter", {
{{"type", "length"}, {"max", 10}}
}}
};
const analyzer_params = {
"tokenizer": "standard",
"filter":[{
"type": "length", // Specifies the filter type as length
"max": 10, // Sets the maximum token length to 10 characters
}],
};
using System.Collections.Generic;
var analyzerParams = new Dictionary<string, object>
{
["tokenizer"] = "standard",
["filter"] = new object[]
{
new Dictionary<string, object>
{
["type"] = "length", // Specifies the filter type as length
["max"] = 10 // Sets the maximum token length to 10 characters
}
}
};
# restful
analyzerParams='{
"tokenizer": "standard",
"filter": [
{
"type": "length",
"max": 10
}
]
}'
يقبل مرشح « length » المعلمات القابلة للتكوين التالية.
| المعلمة | الوصف |
|---|---|
max | يحدد الحد الأقصى لطول الرمز. يتم إزالة الرموز التي يزيد طولها عن هذا الحد. |
يعمل مرشح " length " على المصطلحات التي يولدها أداة التقطيع (tokenizer)، لذا يجب استخدامه بالاقتران مع أداة التقطيع. للاطلاع على قائمة أدوات التقطيع المتاحة في Milvus، راجع "Standard Tokenizer " والصفحات المرتبطة بها.
بعد تعريف analyzer_params ، يمكنك تطبيقها على حقل VARCHAR عند تعريف مخطط المجموعة. وهذا يسمح لـ Milvus بمعالجة النص في هذا الحقل باستخدام المحلل المحدد من أجل التقطيع والتصفية بكفاءة. للحصول على التفاصيل، راجع مثال الاستخدام.
أمثلة
قبل تطبيق تكوين المحلل على مخطط المجموعة الخاص بك، تحقق من سلوكه باستخدام طريقة run_analyzer.
تكوين المحلل
analyzer_params = {
"tokenizer": "standard",
"filter":[{
"type": "length", # Specifies the filter type as length
"max": 10, # Sets the maximum token length to 10 characters
}],
}
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "standard");
analyzerParams.put("filter",
Collections.singletonList(new HashMap<String, Object>() {{
put("type", "length");
put("max", 10);
}}));
analyzerParams := map[string]any{"tokenizer": "standard",
"filter": []any{map[string]any{
"type": "length",
"max": 10,
}}}
let analyzer_params = serde_json::json!({
"tokenizer": "standard",
"filter": [
{
"type": "length",
"max": 10
}
]
});
nlohmann::json analyzer_params = {
{"tokenizer", "standard"},
{"filter", {
{{"type", "length"}, {"max", 10}}
}}
};
const analyzer_params = {
"tokenizer": "standard",
"filter":[{
"type": "length", // Specifies the filter type as length
"max": 10, // Sets the maximum token length to 10 characters
}],
};
using System.Collections.Generic;
var analyzerParams = new Dictionary<string, object>
{
["tokenizer"] = "standard",
["filter"] = new object[]
{
new Dictionary<string, object>
{
["type"] = "length", // Specifies the filter type as length
["max"] = 10 // Sets the maximum token length to 10 characters
}
}
};
# restful
analyzerParams='{
"tokenizer": "standard",
"filter": [
{
"type": "length",
"max": 10
}
]
}'
التحقق باستخدام run_analyzer
from pymilvus import (
MilvusClient,
)
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
# Sample text to analyze
sample_text = "The length filter allows control over token length requirements for text processing."
# Run the standard analyzer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Standard analyzer output:", result)
import java.util.*;
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 length filter allows control over token length requirements for text processing.");
RunAnalyzerResp resp = client.runAnalyzer(RunAnalyzerReq.builder()
.texts(texts)
.analyzerParams(analyzerParams)
.build());
List<RunAnalyzerResp.AnalyzerResult> results = resp.getResults();
import (
"context"
"fmt"
"github.com/milvus-io/milvus/client/v3/milvusclient"
)
ctx := context.Background()
client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
Address: "http://localhost:19530",
APIKey: "root:Milvus",
})
if err != nil {
fmt.Println(err.Error())
// handle error
}
texts := []string{"The length filter allows control over token length requirements for text processing."}
option := milvusclient.NewRunAnalyzerOption(texts...).
WithAnalyzerParams(analyzerParams)
result, err := client.RunAnalyzer(ctx, option)
if err != nil {
fmt.Println(err.Error())
// handle error
}
for _, r := range result {
for _, token := range r.Tokens {
fmt.Println("Standard analyzer output:", token.Text)
}
}
use milvus::v2::error::Result;
use milvus::v2::prelude::*;
let config = ConnectConfig::new().uri("http://localhost:19530").token("root:Milvus");
let client = ClientV2::new(&config).await?;
let sample_text = "The length filter allows control over token length requirements for text processing.";
let result = client
.run_analyzer(
RunAnalyzerRequest::builder()
.texts(vec![sample_text])
.analyzer_params(analyzer_params)
.build()?,
)
.await?;
println!("Standard analyzer output: {:?}", result);
#include "milvus/MilvusClientV2.h"
#include <iostream>
#include <string>
auto client = milvus::MilvusClientV2::Create();
milvus::ConnectParam connect_param{"http://localhost:19530", "root:Milvus"};
auto status = client->Connect(connect_param);
if (!status.IsOk()) {
std::cout << status.Message() << std::endl;
}
std::string text = "The length filter allows control over token length requirements for text processing.";
auto request = milvus::RunAnalyzerRequest()
.AddText(text)
.WithAnalyzerParams(analyzer_params);
milvus::RunAnalyzerResponse response;
status = client->RunAnalyzer(request, response);
if (!status.IsOk()) {
std::cout << status.Message() << std::endl;
}
import { MilvusClient } from "@zilliz/milvus2-sdk-node";
const client = new MilvusClient({
address: "http://localhost:19530",
token: "root:Milvus",
});
// Sample text to analyze
const sample_text = "The length filter allows control over token length requirements for text processing.";
// Run the standard analyzer with the defined configuration
const result = await client.runAnalyzer({
text: sample_text,
analyzer_params: analyzer_params
});
console.log("Standard analyzer output:", result);
using Milvus.Client.V2;
using Milvus.Client.V2.Requests.Utility;
using Milvus.Client.V2.Responses.Utility;
using Milvus.Client.V2.Types;
var client = new MilvusClientV2(new ConnectConfig
{
Uri = "http://localhost:19530",
ApiKey = "root:Milvus"
});
await client.ConnectAsync();
// Sample text to analyze
var sampleText = "The length filter allows control over token length requirements for text processing.";
// Run the standard analyzer with the defined configuration
RunAnalyzerResp result = await client.RunAnalyzerAsync(new RunAnalyzerReq
{
AnalyzerParams = analyzerParams,
Texts = new[] { sampleText }
});
Console.WriteLine("Standard analyzer output: " + string.Join(", ", result.Results.SelectMany(r => r.Tokens).Select(t => t.Token)));
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/common/run_analyzer" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
"text": ["The length filter allows control over token length requirements for text processing."],
"analyzerParams": "{\"tokenizer\": \"standard\", \"filter\": [{\"type\": \"length\", \"max\": 10}]}"
}'
الناتج المتوقع
['The', 'length', 'filter', 'allows', 'control', 'over', 'token', 'length', 'for', 'text', 'processing']