Nueva búsqueda difusa y autocompletado en Manticore Search / Sudo Null IT News

TL;DR

Nos complace presentar dos nuevas características importantes de Manticore Search: búsqueda difusa simple y autocorrección (o autocompletado) de consultas. Estas funciones hacen que la búsqueda sea más cómoda y eficiente para los usuarios. Puedes probarlos en nuestro Demostraciones solicitadas por tarea de GitHub.

La nueva funcionalidad está disponible en la versión de desarrollo. Verificar documentación, para saber cómo instalarlo.

Introducción

Quizás ya estés familiarizado con su funcionamiento. búsqueda semántica de la demostración de búsqueda de problemas en GitHub. En este artículo queremos hablar de dos nuevas características: búsqueda difusa y autocompletado.

  • búsqueda difusa ayuda a encontrar resultados, incluso con pequeños errores en la consulta.

  • Autocompletar sugiere consultas relevantes a medida que escribe, lo que acelera su búsqueda.

Estas funciones no sólo hacen buscar por problemas en GitHub más conveniente, pero también demuestra las capacidades de Manticore Search en la práctica, mejorando la interfaz y brindando la oportunidad de obtener resultados más precisos en muchos casos.

Implementación de búsqueda difusa.

¿Cuál es el problema con los errores tipográficos?

Incluso los errores menores en una consulta pueden provocar la pérdida de resultados. Los usuarios esperan que el motor de búsqueda comprenda su consulta, incluso si hay errores tipográficos menores. Para la búsqueda semántica, esto se puede resolver a través del contexto, pero para la búsqueda tradicional de palabras clave la solución ideal es la búsqueda difusa.

Antiguo método de búsqueda difusa mediante CALL QSUGGEST

Anteriormente, en Manticore Search, a falta de otro, se utilizaban métodos LLAMADA A QSUGGEST y LLAMADA A SUGGEST para búsqueda difusa. Son bastante efectivos, pero tienen limitaciones. Por ejemplo, LLAMAR A QSUGGEST le permite encontrar la última palabra en una consulta usando la distancia de Levenshtein, lo que hace que la búsqueda sea más sólida contra errores tipográficos, pero solo para la última palabra. El segundo método sólo funciona para la primera palabra de la consulta. Ejemplo usando Cliente Manticore de PHP:

$params = (
    'index' => 'issue',
    'body' => (
        'query'=> 'fzzy',
        'options' => (
            'limit' => 10,
            'max_edits' => 2,
        ),
    ),
);
$response = $client->suggest($params);

En este ejemplo, el cliente usa la función CALL SUGGESTpara encontrar sugerencias para la palabra mal escrita “fzzy”. Parámetro max_edits controla la distancia Levenshtein máxima permitida entre la palabra ingresada y las opciones sugeridas. La distancia de Levenshtein es el número mínimo de operaciones (inserciones, eliminaciones o sustitución de caracteres) necesarias para transformar una palabra en otra. Habiendo instalado max_edits en 2, permitimos hasta dos errores por palabra, lo que nos permite encontrar errores tipográficos y palabras similares.

Aunque este enfoque funciona, requiere un procesamiento manual adicional. Además, CALL QSUGGEST no tiene en cuenta los errores al cambiar la distribución del teclado (hablaremos de esto más adelante). Para que la búsqueda difusa sea más conveniente, agregamos una nueva opción a Manticore Search para una consulta para seleccionar resultados, que le permite usar la búsqueda difusa con ciertos parámetros sin la necesidad de escribir código adicional.

Nueva búsqueda difusa simplificada

Ahora tenemos una opción más sencilla. Con solo agregar fuzzy=1 En los parámetros de consulta, puede habilitar fácilmente la búsqueda difusa.

He aquí un ejemplo:

$client = new Client();
$index = $client->index('issues');

$query = 'fzzy serch';
$result = $index->search($query)->option('fuzzy', 1)->get();

foreach ($result as $hit) {
    echo $hit->getTitle() . "\n";
}

Este código permite una búsqueda difusa de la frase mal escrita “fzzy serch”, lo que permite a Manticore encontrar la “búsqueda difusa”. Mira cómo se ve en demostración en GitHub:

Puede encontrar más información sobre la búsqueda difusa en documentación.

Implementación de sugerencias de consultas (autocompletado)

El poder de la búsqueda predictiva

Las sugerencias de consultas o el autocompletado agilizan las búsquedas y ayudan a los usuarios a encontrar consultas relevantes que quizás no hayan considerado:

Autocompletado antiguo con PALABRAS CLAVE DE LLAMADA

Igual que CALL QSUGGEST Para la búsqueda difusa, Manticore Search históricamente tenía un método CALL KEYWORDS para implementar el autocompletado. Este método permite búsquedas de palabras clave con prefijos e infijos en una tabla, lo que proporciona una forma eficaz de implementar el autocompletado. Sin embargo, no admite errores tipográficos, lo que significa que si el usuario comete un error, el sistema no sugerirá palabras clave. Aquí hay un ejemplo del uso de este método en el cliente Manticore en PHP:

$index = 'myindex';
$query = 'pref*';

$response = $client->keywords($index, $query);

foreach ($response as $keyword) {
    echo $keyword('normalized') . ' (docs: ' . $keyword('docs') . ', hits: ' . $keyword('hits') . ")\n";
}

En este ejemplo utilizamos el método CALL KEYWORDSpara encontrar todas las palabras clave en una tabla myindex, que empiezan con pref. Asterisco (*) al final indica una coincidencia de prefijo. También puedes utilizar una coincidencia infija poniendo asteriscos a ambos lados del término, por ejemplo *some*.

Aunque este método es rápido y fácil de implementar, el autocompletado no es tan flexible como la búsqueda difusa. Una búsqueda exacta requiere una coincidencia exacta de prefijo o infijo, que es adecuada para casos en los que es necesario sugerir palabras clave específicas. El nuevo método de autocompletar también resuelve este problema.

Nuevo método de autocompletar CALL AUTOCOMPLETE

Hemos introducido un nuevo método que genera oraciones basadas en unas pocas palabras ingresadas y admite errores tipográficos. Este método combina las funciones CALL KEYWORDS y CALL QSUGGEST.

Un ejemplo de uso del nuevo autocompletado en el cliente PHP:

$client = new Client();
$result = $client->autocomplete((
    'body' => (
        'table' => 'issues',
        'query' => 'hllo wor',
        'options' => (
            'fuzziness' => 1,
            'layouts' => ('us', 'ru'),
        ),
    ),
));

foreach ($result(0)('data') as $suggestion) {
    echo $suggestion . "\n";
}

Este código sugiere “hola mundo” para el “hola trabajo” ingresado, teniendo en cuenta los errores tipográficos y de distribución del teclado.

Cómo funciona internamente: utilizamos lógica de búsqueda difusa para generar ofertas relevantes. El método utiliza funciones de bajo nivel. CALL KEYWORDS y CALL QSUGGEST, para generar variantes a partir de su conjunto de datos.

Para oraciones exactas, estimamos la distancia en función de la longitud de la palabra y la cantidad de documentos disponibles. Por ejemplo, si el usuario ingresa “hola trabajo” y los datos contienen “hola mundo”, el sistema sugerirá exactamente “hola mundo” gracias a la búsqueda difusa. Este enfoque permite a los usuarios recibir oraciones precisas incluso con errores tipográficos.

Puede encontrar más información sobre el autocompletado en documentación.

Definir la distribución del teclado

Manticore ahora puede detectar la distribución del teclado. Esto es especialmente útil para usuarios que cambian accidentalmente de diseño mientras escriben. El sistema admite diseños populares, incluido el idioma y QWERTY, lo que elimina los errores de entrada.

Ventajas:

  • Precisión de búsqueda mejorada para usuarios multilingües

  • Solución de errores debido al cambio de diseños

  • Integración perfecta con búsqueda difusa y autocompletado

Uso de nuevas funciones en la demostración de búsqueda de problemas de GitHub

Con estas nuevas funciones, estamos entusiasmados de mejorar nuestra demostración de búsqueda de problemas en GitHub. Resultó fácil de hacer:

Para habilitar la búsqueda difusa, agregamos siguientes lineas para solicitar:

$search->option('fuzzy', 1);
$search->option('layouts', ('ru', 'us', 'ua'));

Para sugerencias de consultas utilizamos el nuevo función de autocompletar:

$result = $client->autocomplete((
    'body' => (
        'table' => $table,
        'query' => $query,
        'options' => (
            'fuzziness' => 1,
            'layouts' => ('ru', 'ua', 'us'),
        ),
    ),
));

Estas mejoras mejoraron significativamente la precisión de la búsqueda en nuestra demostración, brindando resultados más útiles a los usuarios.

Así es como se ve en la demostración de búsqueda de problemas en GitHub

La integración de la búsqueda difusa con función de autocompletar y distribución del teclado mediante Manticore Search mejora la experiencia del usuario con la herramienta de búsqueda. Al tener en cuenta los errores tipográficos y sugerir sugerencias basadas en patrones de entrada, los usuarios pueden encontrar rápidamente los resultados que necesitan.

A continuación se muestra un ejemplo de cómo funciona la función de autocompletar, que recuerda a las interfaces de búsqueda populares:

Además, la búsqueda difusa mejora la experiencia del usuario al corregir errores comunes como los errores tipográficos. Por ejemplo, si un usuario busca un producto pero comete un error, la búsqueda difusa seguirá encontrando resultados coincidentes. Así es como se ve en una demostración de búsqueda de problemas en GitHub:

Conclusión

La integración de búsqueda difusa y sugerencias de consultas en Manticore Search ha ampliado enormemente sus capacidades. Estas funciones hacen que la búsqueda sea más intuitiva, flexible y eficiente.

La última versión se puede encontrar en la versión previa al desarrollo. Verificar documentaciónpara instalarlo y aprovechar las nuevas funciones.

También lo invitamos a probar estas funciones en línea en nuestro Demostraciones solicitadas por tarea de GitHub y comparte tu opinión. Sus comentarios nos ayudan a mejorar la búsqueda de Manticore.

Estad atentos y si os gusta el proyecto, apoya nuestro repositorio ¡En GitHub!

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *