Compartir a través de


Acerca de las consultas de búsqueda rápida

Las aplicaciones controladas por modelos proporcionan experiencias para buscar rápidamente registros mediante búsqueda rápida o búsqueda de Grid. Con estas experiencias, los usuarios tienen una entrada de texto única que se puede aplicar a varias columnas de una sola tabla.

Las aplicaciones controladas por modelos también proporcionan un cuadro de búsqueda que usa las API de búsqueda de Dataverse cuando la búsqueda de Dataverse está habilitada. Con la búsqueda de Dataverse, los resultados pueden incluir resultados de varias tablas para obtener una funcionalidad de búsqueda más relevante. Cuando la búsqueda de Dataverse no está habilitada, las aplicaciones controladas por modelos proporcionan una experiencia de búsqueda rápida de varias tablas (búsqueda clasificada) que combina resultados de hasta 10 consultas de búsqueda rápida. Obtenga más información sobre las opciones de búsqueda disponibles para las aplicaciones controladas por modelos.

Nota:

Es posible que las consultas de búsqueda rápida no proporcionen experiencias utilizables para cada situación. Consulte Limitaciones.

Considere la posibilidad de usar las API de búsqueda de Dataverse en lugar de consultas de búsqueda rápidas para los escenarios siguientes:

¿Qué es una consulta de búsqueda rápida?

Las consultas de búsqueda rápida usan el siguiente patrón:

  1. Incluyen un único filtro mediante un operador de filtro "OR".

    Puede agregar más filtros, pero solo se evalúan después de procesar los resultados rápidos del filtro de búsqueda.

  2. El filtro "OR" se marca como filtro de búsqueda rápida:

  3. El filtro tiene más de una condición. Cuando solo se evalúa una condición, la consulta tiene un mejor rendimiento cuando se procesa como una consulta normal.

  4. Todas las condiciones del filtro usan el operador "Like":

    El operador "like" requiere una cadena de búsqueda que termine con %.

    Nota:

    El operador "Like" es el único operador admitido para consultas de búsqueda rápida. Es el único operador necesario para los escenarios de la aplicación que están diseñados para admitir consultas de búsqueda rápida. No se han probado otros operadores.

Examples

La forma de escribir una consulta de búsqueda rápida depende de si usa QueryExpression o FetchXml.

Cada uno de los ejemplos de las pestañas siguientes hace lo mismo:

  1. Acepte un único parámetro de cadena de búsqueda. Este valor podría ser un nombre parcial, un número de teléfono, una dirección de correo electrónico o un número de cuenta.

  2. Cree una consulta de búsqueda rápida que pruebe la cadena de búsqueda en las siguientes columnas de la tabla de cuentas:

    • telephone2
    • telephone1
    • emailaddress1
    • accountnumber
    • name
  3. Filtra las cuentas que no están activas.

  4. Ordena los resultados por nombre de cuenta.

Puede usar QueryExpression con el SDK de Dataverse para .NET.

/// <summary>
/// Returns active accounts using quick find filter
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance to use.</param>
/// <param name="searchString">The string to search for</param>
/// <returns>Collection of matching account records</returns>
static EntityCollection QuickFindActiveAccountsQueryExpression(
    IOrganizationService service, 
    string searchString)
{
    // Wildcard required for ConditionOperator.Like
    if (!searchString.EndsWith('%'))
    {
        searchString += '%';
    }

    QueryExpression query = new("account")
    {
        ColumnSet = new("accountid",
                        "name",
                        "accountnumber",
                        "primarycontactid",
                        "address1_city",
                        "telephone1",
                        "emailaddress1"),
        Criteria = new()
        {
            Filters =
            {
                new (LogicalOperator.Or)
                {    
                    // Specify Quick find filter
                    IsQuickFindFilter = true,
                    Conditions =
                    {
                        { new (attributeName: "telephone2", 
                            ConditionOperator.Like, 
                            value: searchString) },
                        { new (attributeName: "telephone1", 
                            ConditionOperator.Like, 
                            value: searchString) },
                        { new (attributeName: "emailaddress1", 
                            ConditionOperator.Like, 
                            value: searchString) },
                        { new (attributeName: "accountnumber", 
                            ConditionOperator.Like,
                            value: searchString) },
                        { new (attributeName: "name", 
                            ConditionOperator.Like,
                            value: searchString) }
                    }
                },
                // Condition to be evaluated after Quick find filter
                new (LogicalOperator.And)
                {
                     Conditions =
                    {
                        {new(attributeName:"statecode",
                            ConditionOperator.Equal, 
                            value: 0)}
                    }
                }
            }
        },
        Orders = {
            {
                new(attributeName: "name", 
                    orderType: OrderType.Ascending)
            }
        }
    };

    return service.RetrieveMultiple(query);
}

Límites de búsqueda rápida de registros

En el Centro de administración de Power Platform, hay una configuración de Dataverse denominada Límites de registro de búsqueda rápida que está activado de forma predeterminada. La columna QuickFindRecordLimitEnabled de la tabla de organización almacena esta configuración.

Importante

Se recomienda encarecidamente dejar habilitada la opción Límites de registro de búsqueda rápida . Esta configuración le protege de la lentitud del sistema y posibles interrupciones del servicio cuando las consultas rápidas agotan los recursos disponibles.

Dado que las consultas de búsqueda rápida admiten experiencias de usuario específicas en aplicaciones, deben devolver resultados o producir errores rápidamente. El usuario no esperará mucho tiempo para los resultados y estas consultas pueden usar muchos recursos del sistema porque pueden tener condiciones en varias columnas de la tabla.

Cuando la opción Límites de registros de búsqueda rápida está habilitada, las consultas de búsqueda rápida devuelven un error cuando el número de resultados supera las 10 000 filas. El error devuelto es:

Nombre: QuickFindQueryRecordLimitExceeded
Código: 0x8004E024
Número: -2147164124
Mensaje: The number of records for this search exceeds the Quick Search record limit. Please refine your query and try again.

No es necesario mostrar este error en la aplicación, pero debe esperar que se produzca. Para mitigar esto, puede:

  • Limitar el número de campos buscados por la consulta.
  • Incluya condiciones de limitación en la consulta.
  • Requerir que el usuario escriba más caracteres en el cuadro de búsqueda para proporcionar menos coincidencias totales.

Si la consulta se realiza correctamente puede depender más del número de registros de la tabla que de cómo se define la consulta. Para entender esto, debe comprender cómo se calcula el límite de elementos de búsqueda.

Cómo se calcula el límite de elementos de búsqueda

El límite de elementos de búsqueda se calcula utilizando SOLO los elementos del filtro de búsqueda rápida. Al procesar la consulta, Dataverse detecta si hay un filtro de búsqueda rápido y lo procesa primero, incluso antes de aplicar filtros de seguridad. Si los resultados del filtro de búsqueda rápida superan los 10 000 filas, Dataverse inicia la QuickFindQueryRecordLimitExceeded excepción y no se procesan otros filtros. Agregar más filtros para obtener un número total menor de registros devueltos no reducirá el potencial de la QuickFindQueryRecordLimitExceeded excepción. Alguien que consulta una tabla sin privilegios para ver todos los registros coincidentes puede obtener este error.

Eludir el límite de registros de búsqueda rápida

Cuando la opción Límites de búsqueda rápida de registros está habilitada y debe probar una consulta que supere el límite de búsqueda rápida de forma temporal, use FetchXml para componer la consulta y establecer el atributo del elemento de filtrooverridequickfindrecordlimitdisabled en '1'.

Aplicar el límite de registros de búsqueda rápida

Cuando la configuración Límites de registro de búsqueda rápida está deshabilitada y necesita probar una consulta con los límites aplicados de forma temporal, use FetchXml para componer la consulta y establezca el atributo elemento de filtrooverridequickfindrecordlimitenabled en '1'.

Limitaciones

Es posible que las consultas de búsqueda rápida no proporcionen experiencias utilizables para cada situación.

Dado que el límite de elementos de búsqueda se calcula antes de aplicar filtros de seguridad, el número total de registros coincidentes en el sistema puede superar el límite de 10 000 registros cuando la tabla contiene un gran número de registros, independientemente del número de registros que el usuario que realiza la llamada tenga privilegios de seguridad para ver. Es posible que la refinación de la consulta o el uso de criterios de búsqueda más específicos no sean suficientes para proporcionar una experiencia utilizable para un usuario.

En el peor de los casos, los usuarios ven una QuickFindQueryRecordLimitExceeded excepción a menos que escriban una cadena de búsqueda específica, lo que no proporciona la experiencia de "búsqueda rápida" esperada.

Véase también

Consultar datos mediante FetchXml
Crear consultas con QueryExpression
API de búsqueda de Dataverse