Parametri per la ricerca full-text Neptune - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Parametri per la ricerca full-text Neptune

Amazon Neptune utilizza i seguenti parametri per specificare le query full-text di OpenSearch in Gremlin e SPARQL:

  • queryType: (obbligatorio). Tipo di query OpenSearch. Per un elenco dei tipi di query, consulta la documentazione di OpenSearch. Neptune supporta i seguenti tipi di query OpenSearch:

    • simple_query_string: restituisce documenti in base a una stringa di query specificata, utilizzando un parser con sintassi Lucene limitata ma con tolleranza agli errori. Questo è il tipo di query predefinito.

      Questa query utilizza una semplice sintassi per analizzare e dividere la stringa di query fornita in termini basati su operatori speciali. La query analizza quindi ogni termine in modo indipendente prima di restituire documenti corrispondenti.

      Mentre la sua sintassi è più limitata della query query_string, la query simple_query_string non restituisce errori per la sintassi non valida. Invece, ignora tutte le parti non valide della stringa di query.

    • match: la query match è la query standard per l'esecuzione di una ricerca full-text, incluse le opzioni per la corrispondenza fuzzy.

    • prefix : restituisce documenti che contengono un prefisso specifico in un campo specificato.

    • fuzzy: restituisce documenti che contengono termini simili al termine di ricerca, come misurato dalla distanza di edit di Levenshtein.

      Una distanza di edit è il numero di modifiche di un carattere necessarie per trasformare un termine in un altro. Queste modifiche possono includere:

      • Modifica di un carattere (ad esempio, da caso a casa).

      • Rimozione di un carattere (ad esempio da cassa a casa).

      • Inserimento di un carattere (ad esempio da cane a canne).

      • Trasposizione di due caratteri adiacenti (ad esempio da ramo ad armo).

      Per trovare termini simili, la query fuzzy crea un insieme di tutte le possibili varianti ed espansioni del termine di ricerca entro una distanza di edit specificata e quindi restituisce corrispondenze esatte per ciascuna di queste varianti.

    • term : restituisce documenti che contengono una corrispondenza esatta di un termine indicato in uno dei campi specificati.

      È possibile utilizzare la query term per trovare documenti in base a un valore preciso, ad esempio un prezzo, un ID prodotto o un nome utente.

      avvertimento

      Evitare di utilizzare la query di termine per i campi di testo. Per impostazione predefinita, OpenSearch modifica i valori dei campi di testo come parte dell'analisi, aumentando le difficoltà nel trovare corrispondenze esatte per i valori dei campi di testo.

      Per cercare i valori dei campi di testo, utilizzare invece la query di corrispondenza.

    • query_string: restituisce documenti in base a una stringa di query specificata, utilizzando un parser con una sintassi rigorosa (sintassi Lucene).

      Questa query utilizza una sintassi per analizzare e dividere la stringa di query fornita in base agli operatori, ad esempio AND o NOT. La query analizza quindi ogni testo diviso in modo indipendente prima di restituire documenti corrispondenti.

      È possibile utilizzare la query query_string per creare una ricerca complessa che include caratteri jolly, ricerche in più campi e altro ancora. Sebbene versatile, la query è rigorosa e restituisce un errore se la stringa di query include una sintassi non valida.

      avvertimento

      Poiché restituisce un errore per qualsiasi sintassi non valida, non è consigliabile utilizzare la query query_string per le caselle di ricerca.

      Se non è necessario supportare una sintassi di query, considerare l'utilizzo della query match. Se sono necessarie le funzionalità di una sintassi di query, utilizzare la query simple_query_string, che è meno rigorosa.

  • field: campo di OpenSearch in base al cui eseguire la ricerca. Questo può essere omesso solo se queryType lo consente (come avviene per simple_query_string e query_string), nel qual caso la ricerca viene eseguita rispetto a tutti i campi. In Gremlin, è implicito.

    È possibile specificare più campi se la query lo consente, come avviene con simple_query_string e query_string.

  • query: (obbligatorio). Query da eseguire su OpenSearch. Il contenuto di questo campo può variare in base al tipo di query. Diversi tipi di query accettano sintassi diverse come, ad esempio, nel caso di Regexp. In Gremlin, query è implicito.

  • maxResults: numero massimo di risultati da restituire. Il valore predefinito è l'impostazione index.max_result_window di OpenSearch, che per impostazione predefinita è 10.000. Il parametro maxResults può specificare qualsiasi numero inferiore a quello.

    Importante

    Se si imposta maxResults su un valore superiore al valore index.max_result_window di OpenSearch e si tenta di recuperare più di index.max_result_window risultati, OpenSearch restituisce un errore Result window is too large. Tuttavia, Neptune gestisce questo scenario correttamente senza propagare l'errore. Tenere a mente ciò se stai cercando di recuperare più risultati index.max_result_window.

  • minScore: punteggio minimo che un risultato di ricerca deve ottenere per essere restituito. Consulta la documentazione relativa alla pertinenza di OpenSearch per una spiegazione del punteggio dei risultati.

  • batchSize: Neptune recupera sempre i dati in batch (le dimensioni predefinite del batch sono pari a 100). È possibile utilizzare questo parametro per ottimizzare le prestazioni. Le dimensioni del batch non possono superare l'impostazione index.max_result_window di OpenSearch, che per impostazione predefinita sono pari a 10.000.

  • sortBy: parametro facoltativo che consente di ordinare i risultati restituiti da OpenSearch in base a una delle seguenti opzioni:

    • Un campo stringa specifico nel documento  

      Ad esempio, in una query SPARQL, è possibile specificare:

      neptune-fts:config neptune-fts:sortBy foaf:name .

      In una query Gremlin simile, è possibile specificare:

      .withSideEffect('Neptune#fts.sortBy', 'name')
    • Un campo non stringa specifico (long, double e così via) nel documento  

      Tieni presente che quando si esegue l'ordinamento in base a un campo non stringa, è necessario aggiungere .value al nome del campo per differenziarlo da un campo stringa.

      Ad esempio, in una query SPARQL, è possibile specificare:

      neptune-fts:config neptune-fts:sortBy foaf:name.value .

      In una query Gremlin simile, è possibile specificare:

      .withSideEffect('Neptune#fts.sortBy', 'name.value')
    • score: ordina in base al punteggio di corrispondenza (valore predefinito).

      Se il parametro sortOrder è presente ma sortBy non è presente, i risultati vengono ordinati score in base all'ordine specificato da sortOrder.

    • id: ordina in base all'ID, ovvero l'URI del soggetto in SPARQL o l'ID vertice o arco in Gremlin.

      Ad esempio, in una query SPARQL, è possibile specificare:

      neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_id' .

      In una query Gremlin simile, è possibile specificare:

      .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_id')
    • label: ordina in base all'etichetta.

      Ad esempio, in una query SPARQL, è possibile specificare:

      neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_type' .

      In una query Gremlin simile, è possibile specificare:

      .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_type')
    • doc_type: ordina in base al tipo di documento (ovvero SPARQL o Gremlin).

      Ad esempio, in una query SPARQL, è possibile specificare:

      neptune-fts:config neptune-fts:sortBy 'Neptune#fts.document_type' .

      In una query Gremlin simile, è possibile specificare:

      .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.document_type')

    Per impostazione predefinita, i risultati di OpenSearch non sono ordinati e l'ordine non è deterministico, di conseguenza la stessa query può restituire gli elementi in un ordine diverso ogni volta che viene eseguita. Per questo motivo, se il set di risultati è maggiore di max_result_window, un sottoinsieme piuttosto differente del totale dei risultati potrebbe essere restituito ogni volta che viene eseguita una query. Ordinando, tuttavia, è possibile rendere i risultati di diverse esecuzioni comparabili in modo più diretto.

    Se nessun parametro sortOrder accompagna sortBy, viene utilizzato l'ordine discendente (DESC) dal più grande al più piccolo.

  • sortOrder: parametro facoltativo che consente di specificare se i risultati di OpenSearch sono ordinati dal valore minimo al valore massimo o dal valore massimo al valore minimo (impostazione predefinita):

    • ASC: ordine crescente, dal valore minimo al valore massimo.

    • DESC: ordine decrescente, dal valore massimo al valore minimo.

      Questo è il valore predefinito, utilizzato quando il parametro sortBy è presente ma non è specificato alcun sortOrder.

    Se né sortBysortOrder sono specificati, i risultati di OpenSearch non sono ordinati per impostazione predefinita.