Parámetros de búsqueda de texto completo de Neptune - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Parámetros de búsqueda de texto completo de Neptune

Amazon Neptune utiliza los siguientes parámetros para especificar las consultas de OpenSearch de texto completo tanto en Gremlin como en SPARQL:

  • queryType: (obligatorio) el tipo de consulta de OpenSearch. (Para obtener una lista de los tipos de consultas, consulte la documentación de OpenSearch). Neptune admite los siguientes tipos de consultas de OpenSearch:

    • simple_query_string: devuelve los documentos en función de la cadena de consulta proporcionada, mediante un analizador con una sintaxis de Lucene limitada pero tolerante a errores. Este es el tipo de consulta predeterminado.

      Esta consulta utiliza una sintaxis simple para analizar y dividir la cadena de consulta proporcionada en términos basados en operadores especiales. A continuación, la consulta analiza cada término de forma independiente antes de devolver documentos coincidentes.

      Aunque su sintaxis está más limitada que la consulta query_string, la consulta simple_query_string no devuelve errores para la sintaxis no válida. En su lugar, no tiene en cuenta cualquier parte no válida de la cadena de consulta.

    • match: la consulta match es la consulta estándar para realizar una búsqueda de texto completo, e incluye opciones de coincidencia parcial.

    • prefix: devuelve los documentos que contienen un prefijo específico en un campo proporcionado.

    • fuzzy: devuelve documentos que contienen términos similares al término de búsqueda, medidos por medio de una distancia de edición de Levenshtein.

      Una distancia de edición es el número de cambios de un carácter necesarios para convertir un término en otro. Estos cambios pueden incluir:

      • Cambio de un carácter (box a fox).

      • Eliminación de un carácter (black a lack).

      • Inserción de un carácter (sic a sick).

      • Transposición de dos caracteres adyacentes (act a cat).

      Para encontrar términos similares, la consulta aproximada crea un conjunto de todas las variaciones y expansiones posibles del término de búsqueda dentro de una distancia de edición especificada y, a continuación, devuelve coincidencias exactas para cada una de esas variantes.

    • term: devuelve documentos que contienen una coincidencia exacta de un término especificado en uno de los campos especificados.

      Puede utilizar la consulta term para buscar documentos basados en un valor preciso, como un precio, el ID de un producto o un nombre de usuario.

      aviso

      Evite usar el término consulta para los campos de texto. De forma predeterminada, OpenSearch cambia los valores de los campos de texto como parte de su análisis, lo que puede dificultar la búsqueda de coincidencias exactas para los valores de los campos de texto.

      Para buscar valores de campo de texto, utilice la consulta de coincidencia en su lugar.

    • query_string: devuelve los documentos en función de la cadena de consulta proporcionada, mediante un analizador con una sintaxis estricta (sintaxis de Lucene).

      Esta consulta utiliza una sintaxis para analizar y dividir la cadena de consulta proporcionada basadas en operadores, como Y y NO. A continuación, la consulta analiza cada texto dividido de forma independiente antes de devolver documentos coincidentes.

      Puede utilizar la consulta query_string para crear una búsqueda compleja que incluya caracteres comodín, búsquedas en varios campos y mucho más. Aunque versátil, la consulta es estricta y devuelve un error si la cadena de consulta incluye cualquier sintaxis no válida.

      aviso

      Dado que devuelve un error para cualquier sintaxis no válida, no recomendamos usar la consulta query_string para los cuadros de búsqueda.

      Si no tiene que admitir una sintaxis de consulta, considere el uso de la consulta match. Si necesita las características de una sintaxis de consulta, utilice la consulta simple_query_string, que es menos estricta.

  • field: el campo de OpenSearch en el que se va a ejecutar la búsqueda. Solo se puede omitir si queryType lo permite (como hacen simple_query_string y query_string), en cuyo caso la búsqueda se efectúa en todos los campos. En Gremlin, está implícito.

    Se pueden especificar varios campos si la consulta lo permite, como hacen simple_query_string y query_string.

  • query: (obligatorio) la consulta que se va a ejecutar en OpenSearch. El contenido de este campo puede variar según el valor de queryType. Los distintos valores de queryType aceptan diferentes sintaxis, como, por ejemplo, hace Regexp. En Gremlin, query está implícito.

  • maxResults: el número máximo de resultados que se deben devolver. El valor predeterminado es la configuración index.max_result_window de OpenSearch, que de manera predeterminada es 10 000. El parámetro maxResults puede especificar cualquier número menor que eso.

    importante

    Si establece maxResults en un valor mayor que el valor de index.max_result_window de OpenSearch e intenta recuperar más de index.max_result_window resultados, OpenSearch produce un error Result window is too large. Sin embargo, Neptune maneja esto con fluidez sin propagar el error. Tenga esto en cuenta si trata de obtener más resultados de index.max_result_window.

  • minScore: la puntuación mínima que debe tener un resultado de búsqueda para ser devuelto. Consulte OpenSearch relevance documentation para obtener una explicación de la puntuación de los resultados.

  • batchSize: Neptune siempre obtiene los datos por lotes (el tamaño de lote predeterminado es 100). Puede utilizar este parámetro para ajustar el rendimiento. El tamaño del lote no puede superar la configuración de index.max_result_window de OpenSearch, que de manera predeterminada es 10 000.

  • sortBy: un parámetro opcional que permite ordenar los resultados que devuelve OpenSearch según una de las siguientes opciones:

    • Un campo de cadena concreto del documento:  

      Por ejemplo, en una consulta SPARQL, puede especificar:

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

      En una consulta Gremlin similar, puede especificar:

      .withSideEffect('Neptune#fts.sortBy', 'name')
    • Un campo concreto que no es una cadena (long, double, etc.) del documento:  

      Tenga en cuenta que, al ordenar por un campo que no sea una cadena, debe agregar .value al nombre del campo para diferenciarlo de un campo de cadena.

      Por ejemplo, en una consulta SPARQL, puede especificar:

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

      En una consulta Gremlin similar, puede especificar:

      .withSideEffect('Neptune#fts.sortBy', 'name.value')
    • score: ordena por puntuación de coincidencia (valor predeterminado).

      Si el parámetro sortOrder está presente pero sortBy no está presente, los resultados se ordenan por score en el orden especificado por sortOrder.

    • id: ordena por identificador, es decir, el URI del sujeto de SPARQL o el identificador de vértice o borde de Gremlin.

      Por ejemplo, en una consulta SPARQL, puede especificar:

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

      En una consulta Gremlin similar, puede especificar:

      .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_id')
    • label: ordena por etiqueta.

      Por ejemplo, en una consulta SPARQL, puede especificar:

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

      En una consulta Gremlin similar, puede especificar:

      .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_type')
    • doc_type: ordena por tipo de documento (es decir, SPARQL o Gremlin).

      Por ejemplo, en una consulta SPARQL, puede especificar:

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

      En una consulta Gremlin similar, puede especificar:

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

    De forma predeterminada, los resultados de OpenSearch no se ordenan y su orden no es determinista, lo que significa que la misma consulta puede devolver elementos con un orden diferente cada vez que se ejecuta. Por esta razón, si el conjunto de resultados es mayor que max_result_window, se podría devolver un subconjunto bastante diferente de los resultados totales cada vez que se ejecuta una consulta. Al ordenar, sin embargo, puede hacer que los resultados de diferentes ejecuciones sean más equivalentes de forma directa.

    Si ningún parámetro sortOrder acompaña a sortBy, se utiliza el orden descendente (DESC) de mayor a menor.

  • sortOrder: un parámetro opcional que permite especificar si los resultados de OpenSearch se ordenan de menor a mayor o de mayor a menor (opción predeterminada):

    • ASC: orden ascendente, de menor a mayor.

    • DESC: orden descendente, de mayor a menor.

      Este es el valor predeterminado, que se utiliza cuando el parámetro sortBy está presente pero no se especifica sortOrder.

    Si no están presentes sortBy ni sortOrder, los resultados de OpenSearch no se ordenan de forma predeterminada.