ES2774355T3 - Sistemas, métodos y productos de programa informático para implementar una base de datos de búsqueda de texto libre - Google Patents

Sistemas, métodos y productos de programa informático para implementar una base de datos de búsqueda de texto libre Download PDF

Info

Publication number
ES2774355T3
ES2774355T3 ES15290202T ES15290202T ES2774355T3 ES 2774355 T3 ES2774355 T3 ES 2774355T3 ES 15290202 T ES15290202 T ES 15290202T ES 15290202 T ES15290202 T ES 15290202T ES 2774355 T3 ES2774355 T3 ES 2774355T3
Authority
ES
Spain
Prior art keywords
free text
text search
relationship
data
trip
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES15290202T
Other languages
English (en)
Inventor
Romain Barraud
David Pauchet
Teodor-Vlad Tanasescu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amadeus SAS
Original Assignee
Amadeus SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amadeus SAS filed Critical Amadeus SAS
Application granted granted Critical
Publication of ES2774355T3 publication Critical patent/ES2774355T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/243Natural language query formulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Un método (400) para implementar una base de datos de búsqueda de texto libre dinámica, almacenando la base de datos de búsqueda de texto libre dinámica primeros datos, generados por al menos un procesador, que representan una primera relación que incluye una primera palabra clave, un primer viaje y un primer valor de ponderación, comprendiendo el método (400): recibir, por el al menos un procesador, una pluralidad de peticiones de búsqueda de texto libre (404); calcular, por el al menos un procesador, un segundo valor de ponderación para la primera relación basándose en las peticiones de búsqueda de texto libre (406), en donde el segundo valor de ponderación difiere del primer valor de ponderación; y transformar, por el al menos un procesador, los primeros datos en segundos datos (408) insertando el segundo valor de ponderación en los primeros datos de tal forma que la primera relación incluye el segundo valor de ponderación, en donde calcular el segundo valor de ponderación para la primera relación basándose en las peticiones de búsqueda de texto libre (406) comprende: definir una pluralidad de eventos potenciales (502) para la primera relación que puede producirse con respecto a una propuesta de viaje de vuelta en respuesta a las peticiones de búsqueda de texto libre basándose en la primera relación; para cada petición de búsqueda de texto libre, consultar la base de datos de búsqueda de texto libre dinámica para la primera relación que coincida con la petición de búsqueda de texto libre y devolver una o más propuestas de viaje basándose en la primera relación; registrar un número de ocurrencias de cada evento potencial con respecto a la una o más propuestas de viaje devueltas para las peticiones de búsqueda de texto libre; y calcular el segundo valor de ponderación para la primera relación basándose en el número de ocurrencias, y en donde devolver la una o más propuestas de viaje basándose en la primera relación comprende: para cada petición de búsqueda de texto libre: aplicar un ajuste temporal a una pluralidad de ponderaciones de evento para definir ponderaciones de evento temporalmente ajustadas (506), en donde cada ponderación de evento corresponde a uno de los eventos potenciales; y devolver la una o más propuestas de viaje basándose en las ponderaciones de evento temporalmente ajustadas (508).

Description

DESCRIPCIÓN
Sistemas, métodos y productos de programa informático para implementar una base de datos de búsqueda de texto libre
Campo técnico
La presente invención se refiere en general a bases de datos informáticas y, más particularmente, a sistemas, métodos y productos de programa informático para implementar una base de datos de búsqueda de texto libre que facilita la provisión de sugerencias de viaje basándose en búsquedas de texto libre.
Antecedentes
Una base de datos informática habilita que grandes cantidades de información electrónica se organicen de una manera lógica. Tal organización lógica habilita que la base de datos informática devuelva rápida y eficientemente tal información, o al menos una porción de la misma, en respuesta a una consulta recibida desde un sistema solicitante. El sistema solicitante puede usar, a continuación, la información devuelta desde la base de datos para facilitar un proceso ejecutado por el sistema.
Proveedores de servicios tales como aerolíneas son conocidos por utilizar tales bases de datos para ayudar a usuarios en la planificación de un viaje. En particular, cuando un viaje está en el proceso de planificarse, un usuario puede haber desarrollado únicamente una idea general del viaje y no los detalles. Por ejemplo, un usuario puede desear viajar un destino con clima templado durante el invierno, pero no estar seguro de un destino o fechas específicos. En consecuencia, se han desarrollado sistemas para ayudar al usuario proporcionando sugerencias de viaje basándose en las preferencias de viaje generalizadas del usuario. Tras recibir las preferencias de viaje del usuario, los sistemas buscan en una base de datos sugerencias de viaje que coincidan con las preferencias de viaje proporcionadas.
Los sistemas anteriores utilizan comúnmente una interfaz gráfica de usuario ("GUI") para recibir los parámetros de viaje del usuario. La GUI habitualmente incluye múltiples campos, dedicándose cada uno a un tipo predeterminado de parámetro de viaje. Por ejemplo, puede dedicarse un campo a la recepción de un presupuesto preferido y puede dedicarse otro campo a la recepción un intervalo de fechas preferido. Cada uno de los campos también incluye un formato predefinido en el que debe introducirse el parámetro de viaje asociado. De esta manera, la GUI limita el tipo y formato de parámetros de viaje que pueden recibirse desde un usuario y buscarse en la base de datos.
El documento US 800 1152 B1 se refiere a una interfaz de búsqueda y tecnología de búsqueda para refinamiento de búsqueda interactivo basándose en similitud de característica (ISRFS), que proporciona una herramienta de búsqueda interactiva basándose en conocimiento semántico y asociativo humano. Dada una consulta, la herramienta puede recuperar los artículos textuales más adecuados en un repositorio de datos textuales que está categorizado y/o parcialmente etiquetado. En la interfaz de usuario, puede usarse un controlador ecualizador para refinar los resultados de búsqueda, por ejemplo, basándose en características extraídas manual o automáticamente y una escala semántica graduada para ajustar las ponderaciones de las diversas características. La tecnología puede aplicarse a cualquier repositorio de datos.
Se necesitan sistemas mejorados, métodos y productos de programa informático para implementar una base de datos de búsqueda de texto libre que facilite la provisión de sugerencias de viaje basándose en búsquedas de texto libre.
Sumario
La presente invención se define en las reivindicaciones independientes. Las reivindicaciones dependientes definen realizaciones de la misma.
Un método para implementar una base de datos de búsqueda de texto libre dinámica incluye generar, por al menos un procesador, primeros datos para la base de datos de búsqueda de texto libre dinámica que representa una primera relación que incluye una primera palabra clave, un primer viaje y un primer valor de ponderación. Además, el método incluye recibir, por el al menos un procesador, una pluralidad de peticiones de búsqueda de texto libre, y calcular, por el al menos un procesador, un segundo valor de ponderación para la primera relación basándose en las peticiones de búsqueda de texto libre. El segundo valor de ponderación difiere del primer valor de ponderación. El método incluye adicionalmente transformar, por el al menos un procesador, los primeros datos en segundos datos insertando el segundo valor de ponderación en los primeros datos de tal forma que la primera relación incluye el segundo valor de ponderación.
Un sistema para implementar una base de datos de búsqueda de texto libre dinámica incluye al menos un procesador y una memoria acoplada al al menos un procesador. La memoria almacena instrucciones que tras la ejecución por el al menos un procesador provocan que el sistema genere primeros datos para la base de datos de búsqueda de texto libre dinámica que representa una primera relación que incluye una primera palabra clave, un primer viaje y un primer valor de ponderación, reciba una pluralidad de peticiones de búsqueda de texto libre, y calcule un segundo valor de ponderación para la primera relación basándose en las peticiones de búsqueda de texto libre. El segundo valor de ponderación difiere del primer valor de ponderación. Las instrucciones almacenadas tras la ejecución adicionalmente provocan que el sistema transforme los primeros datos en segundos datos insertando el segundo valor de ponderación en los primeros datos de tal forma que la primera relación incluye el segundo valor de ponderación.
Un producto de programa informático incluye un medio legible por ordenador no transitorio. Se almacenan instrucciones en el medio legible por ordenador no transitorio. Las instrucciones, tras la ejecución por el al menos un procesador, provocan que el al menos un procesador genere primeros datos para la base de datos de búsqueda de texto libre dinámica que representa una primera relación que incluye una primera palabra clave, un primer viaje y un primer valor de ponderación, reciba una pluralidad de peticiones de búsqueda de texto libre, y calcule un segundo valor de ponderación para la primera relación basándose en las peticiones de búsqueda de texto libre. El segundo valor de ponderación difiere del primer valor de ponderación. Las instrucciones tras la ejecución provocan adicionalmente que el al menos un procesador transforme los primeros datos en segundos datos insertando el segundo valor de ponderación en los primeros datos de tal forma que la primera relación incluye el segundo valor de ponderación.
Breve descripción de los dibujos
La Figura 1 es una vista esquemática de un entorno de operación ilustrativo que incluye un sistema de propuestas de viaje.
La Figura 2 es una vista esquemática de un sistema informático ilustrativo del entorno operativo en la Figura 1. La Figura 3 es una vista esquemática de una arquitectura de procesamiento ilustrativa para implementar una base de datos de búsqueda de texto libre dinámica.
La Figura 4 es una vista esquemática de relaciones ilustrativas que pueden almacenarse en la base de datos de búsqueda de texto libre dinámica de la Figura 3.
La Figura 5 es una vista esquemática de relaciones ilustrativas adicionales que pueden almacenarse en la base de datos de búsqueda de texto libre dinámica de la Figura 3.
La Figura 6 es un diagrama de flujo de un proceso ilustrativo para generar datos representativos de relaciones para la base de datos de búsqueda de texto libre dinámica de la Figura 3.
La Figura 7 es un diagrama de flujo de un proceso ilustrativo para extraer palabras clave de una cadena de texto libre.
La Figura 8 es un diagrama de flujo de un proceso ilustrativo para responder a una petición de búsqueda de texto libre.
La Figura 9 es un diagrama de flujo de un proceso ilustrativo para actualizar dinámicamente una relación en la base de datos de búsqueda de texto libre dinámica de la Figura 3.
La Figura 10 es un diagrama de flujo de un proceso ilustrativo para calcular una ponderación actualizada para una relación almacenada en la base de datos de búsqueda de texto libre dinámica de la Figura 3 basándose en un periodo de peticiones de búsqueda de texto libre recibidas.
La Figura 11 es un diagrama de flujo de un proceso ilustrativo para eliminar relaciones no significativas de la base de datos de búsqueda de texto libre dinámica de la Figura 3.
La Figura 12 es un diagrama de flujo de otro proceso ilustrativo para eliminar relaciones no significativas de la base de datos de búsqueda de texto libre dinámica de la Figura 3.
Descripción detallada
La Figura 1 ilustra un entorno de operación ilustrativo 10. El entorno de operación ilustrativo 10 puede incluir uno o más sistemas de proveedor de servicios 12, un sistema de distribución global ("GDS") 14, uno o más sistemas de usuario 16, uno o más sistemas de proveedor de datos 18 y/o un sistema de propuestas de viaje 20. Cualquiera de los sistemas de proveedor de servicios 12, el GDS 14, los sistemas de usuario 16, los sistemas de proveedor de datos 18, y el sistema de propuestas de viaje 20 puede comunicarse a través de una conexión directa o a través de una red 24 tal como internet. Además, dos o más de estos sistemas pueden integrarse en un sistema. Por ejemplo, un sistema puede alojar el GDS 14, uno o más de los sistemas de proveedor de servicios 12 y/o el sistema de propuestas de viaje 20.
Cada uno de los sistemas de proveedor de servicios 12 puede pertenecer a cualquier entidad con capacidad de recibir peticiones de búsqueda de inventario y peticiones de reserva desde un sistema de usuario 16. Una entidad de este tipo, por ejemplo, puede ser una aerolínea, un hotel, un servicio de alquiler de coches o un proveedor de actividades tal como un centro de reuniones o promotor. Un sistema de proveedor de servicios 12 puede mantener una base de datos de inventario de los productos del proveedor de servicios. Tras recibir una petición de búsqueda de inventario, el sistema de proveedor de servicios 12 puede consultar la base de datos de inventario para determinar soluciones disponibles que coinciden con la petición de búsqueda. Además, cada uno de los sistemas de proveedor de servicios 12 puede mantener una base de datos de registros de reservas para sus productos. En el caso de una aerolínea, por ejemplo, el sistema de proveedor de servicios 12 puede almacenar un Registro de Nombres de Pasajeros ("PNR") para cada itinerario de vuelo reservado. El PNR puede incluir información acerca del itinerario de vuelo reservado e información acerca de cada pasajero en la reserva.
El GDS 14 puede proporcionar acceso consolidado a las bases de datos de inventario y reservas de múltiples sistemas de proveedor de servicios 12, que habilita búsquedas centralizadas de los inventarios de múltiples sistemas de proveedor de servicios 12 y reservas que implican a múltiples proveedores de servicios. En particular, el GDS 14 puede incluir una conexión en tiempo real a las bases de datos de inventario y reservas de cada sistema de proveedor de servicios 12, o puede almacenar en memoria caché tales datos en una base de datos local. En respuesta a recibir una petición de búsqueda de inventario desde un sistema de usuario 16, el GDS 14 puede utilizar la conexión en tiempo real o los datos almacenados en memoria caché para determinar soluciones disponibles desde más de un sistema de proveedor de servicios 12. Por ejemplo, el GDS 14 puede proporcionar soluciones de viaje disponibles de múltiples aerolíneas de modo que el usuario puede comparar y seleccionar una opción de menor coste. El GDS 14 también puede proporcionar una solución que implica una combinación de dos o más proveedores de servicios, tal como una solución de viajes que tiene itinerario de vuelo de múltiples segmentos siendo cada segmento operado por una aerolínea diferente. Además, el GDS 14 puede proporcionar una solución que incluye una combinación de tipos de servicio, tal como una solución que incluye tanto un vuelo como un hotel.
El sistema de propuestas de viaje 20 puede configurarse para ayudar a un usuario en la planificación de un viaje. Más concreto, un usuario puede tener una idea general para un viaje, pero puede no estar seguro de los detalles del viaje tal como las fechas exactas o el destino. El sistema de propuestas de viaje 20 puede configurarse, por lo tanto, para recibir criterios de búsqueda de viaje generalizados, y proporcionar sugerencias de viaje o propuestas basadas en los mismos. Para este fin, el sistema de propuestas de viaje 20 también puede configurarse para recibir una petición de búsqueda de texto libre desde un usuario, tal como a través del sistema de usuario 16. A diferencia de solicitudes de búsqueda de viaja típicas, que se limita a criterios de búsqueda de un tipo predefinido enviado en un formato específico, una petición de búsqueda de texto libre puede incluir una cadena de búsqueda de texto libre que es una consulta de lenguaje natural de formato libre introducida por un usuario. Por ejemplo, un usuario puede introducir "lugar soleado con una playa" como parte de una petición de búsqueda de texto libre. Debido a que la cadena de búsqueda de texto libre no se limita a ningún formato particular, idioma y/o contenido, la capacidad del sistema de propuestas de viaje 20 para procesar tales cadenas puede habilitar que un usuario cree eficientemente una petición de búsqueda con cualquier criterio de búsqueda. El usuario no tiene que preocuparse acerca del formato, idioma o tipo de criterios introducidos en la cadena de texto libre, que resulta finalmente en un sistema cada vez más accesible.
El sistema de propuestas de viaje 20 puede mantener una base de datos de búsqueda de texto libre dinámica 56 (Figura 3) para facilitar la provisión de sugerencias de viaje o propuestas basándose en una petición de búsqueda de texto libre recibida. En particular, el sistema de propuestas de viaje 20 puede configurarse para recuperar datos de los sistemas de proveedor de datos 18, que pueden incluir fuentes en línea tales como Wikipedia, sitios web que ofrecen anuncios de viaje y plataformas sociales. El sistema de propuestas de viaje 20 puede configurarse adicionalmente para determinar datos representativos de relaciones a partir de los datos recuperados, y almacenar los datos representativos de las relaciones en la base de datos de búsqueda de texto libre dinámica 56. Cada relación representada por los datos puede incluir una o más palabras clave, una ponderación y un viaje.
Tras recibir una petición de búsqueda de texto libre, tal como a través de un sistema de usuario 16, el sistema de propuestas de viaje 20 puede utilizar las relaciones determinadas para generar una o más propuestas de viaje que coinciden con la petición de búsqueda de texto libre. Por ejemplo, el sistema de propuestas de viaje 20 puede emparejar una petición de búsqueda de texto libre que incluye "lugar soleado con una playa" con un viaje a París en agosto. El sistema de propuestas de viaje 20 puede transmitir posteriormente este viaje como una propuesta de viaje al sistema de usuario 16 para una acción por el usuario. Por ejemplo, el usuario puede seleccionar París como un destino, seleccionar fechas específicas en agosto y emitir peticiones de reserva al GDS 14 y/o sistemas de proveedor de servicios 12 basándose en la propuesta de viaje proporcionada.
El sistema de propuestas de viaje 20 puede incluir adicionalmente un mecanismo por el cual actualizar dinámicamente las relaciones almacenadas en la base de datos de búsqueda de texto libre dinámica 56. Un mecanismo de este tipo asegura que las relaciones son precisas y siguen siendo relevantes, lo que aumenta la eficiencia general del sistema en la respuesta a peticiones de búsqueda de texto libre. Más particularmente, actualizando dinámicamente las relaciones, el sistema de propuestas de viaje 20 reduce el almacenamiento electrónico de y evita la búsqueda de relaciones no significativas u obsoletas. Como un ejemplo, el sistema de propuestas de viaje 20 puede utilizar peticiones de búsqueda de texto libre recibidas, acciones de usuario y recursos en línea tal como redes sociales para actualizar las relaciones almacenadas. La actualización dinámica de las relaciones almacenadas en la base de datos de búsqueda de texto libre dinámica 56 se analiza en más detalle a continuación.
Haciendo referencia ahora a la Figura 2, los sistemas de proveedor de servicios 12, GDS 14, sistemas de usuario 16, sistemas de proveedor de datos 18 y/o sistema de propuestas de viaje 20 del entorno operativo 10 pueden implementarse en uno o más dispositivos o sistemas informáticos, tal como el sistema informático ilustrativo 26. El sistema informático 26 puede incluir un procesador 28, una memoria 30, un dispositivo de memoria de almacenamiento masivo 32, una interfaz de entrada/salida (E/S) 34 y una Interfaz de Hombre a Máquina (HMI) 36. El sistema informático 26 también puede acoplarse operativamente a uno o más recursos externos 38 a través de la red 24 o interfaz de E/S 34. Recursos externos pueden incluir, pero sin limitación, servidores, bases de datos, dispositivos de almacenamiento masivo, dispositivos periféricos, servicios de red basados en la nube o cualquier otro recurso informático adecuado que puede usarse por el sistema informático 26.
El procesador 28 puede incluir uno o más dispositivos seleccionados a partir de microprocesadores, microcontroladores, procesadores de señales digitales, microordenadores, unidades de procesamiento central, campo de matrices de puertas programables, dispositivos lógicos programables, máquinas de estado, circuitos lógicos, circuitos analógicos, circuitos digitales o cualquier otro dispositivo que manipula señales (analógicas o digitales) basándose en instrucciones operacionales que se almacenan en la memoria 30. La memoria 30 puede incluir un dispositivo de una sola memoria o una pluralidad de dispositivos de memoria que incluyen, pero sin limitación, memoria de sólo lectura (ROM), memoria de acceso aleatorio (RAM), memoria volátil, memoria no volátil, memoria de acceso aleatorio estática (SRAM), memoria de acceso aleatorio dinámica (DRAM), memoria flash, memoria caché o cualquier otro dispositivo capaz de almacenar información. El dispositivo de memoria de almacenamiento masivo 32 puede incluir dispositivos de almacenamiento de datos tal como un disco duro, unidad óptica, unidad de cinta, dispositivo de estado sólido no volátil o cualquier otro dispositivo capaz de almacenar información.
El procesador 28 puede operar bajo el control de un sistema operativo 40 que reside en la memoria 30. El sistema operativo 40 puede gestionar recursos informáticos de modo que código de programa informático incorporado como una o más aplicaciones de software informáticas, tal como una aplicación 42 que reside en la memoria 30, puede tener instrucciones ejecutadas por el procesador 28. En una realización alternativa, el procesador 28 puede ejecutar la aplicación 42 directamente, en cuyo caso el sistema operativo 40 puede omitirse. Una o más estructuras de datos 44 también pueden residir en la memoria 30, y pueden usarse por el procesador 28, el sistema operativo 40 o la aplicación 42 para almacenar o manipular datos.
La interfaz de E/S 34 puede proporcionar una interfaz de máquina que acopla operativamente el procesador 28 a otros dispositivos y sistemas, tal como la red 24 o recurso externo 38. La aplicación 42 puede, de este modo, trabajar cooperativamente con la red 24 o el recurso externo 38 comunicando a través de la interfaz de E/S 34 para proporcionar las diversas características, funciones, aplicaciones, procesos o módulos que comprenden realizaciones de la invención. La aplicación 42 también puede tener código de programa que se ejecuta por uno o más recursos externos 38, o de otra manera basarse en funciones o señales proporcionadas por otro sistema o componentes de red externos al sistema informático 26. De hecho, dada las casi infinitas configuraciones posibles de hardware y software, los expertos en la materia entenderán que realizaciones de la invención pueden incluir aplicaciones que se ubican externamente al sistema informático 26, se distribuyen entre múltiples ordenadores u otros recursos externos 38 o se proporcionan por recursos informáticos (hardware y software) que se proporcionan como un servicio a través de la red 24, tal como un servicio de informática en la nube.
La HMI 36 puede acoplarse operativamente al procesador 28 del ordenador 26 de una manera conocida para permitir que un usuario interactúe directamente con el ordenador 26. La HMI 36 puede incluir visualizadores de vídeo o alfanuméricos, una pantalla táctil, un altavoz y cualquier otro identificador de audio o visual adecuado capaz de proporcionar datos al usuario. La HMI 36 también puede incluir dispositivos de entrada y controles tal como un teclado alfanumérico, un dispositivo apuntador, teclados numéricos, botones de pulsación, botones de control, micrófonos, etc., capaces de aceptar comandos o entradas del usuario y transmitir la entrada introducida al procesador 28.
Una base de datos 46 puede residir en el dispositivo de memoria de almacenamiento masivo 32, y puede usarse para recopilar y organizar datos usados por los varios sistemas y módulos descritos en este documento. La base de datos 46 puede incluir datos y soportar estructuras de datos que almacenan y organizan los datos. En particular, la base de datos 46 puede disponerse con cualquier organización o estructura de base de datos incluyendo, pero sin limitación, una base de datos relacional, una base de datos jerárquica, una base de datos de red o combinaciones de las mismas. Puede usarse un sistema de gestión de base de datos en forma de una aplicación de software informática, que se ejecuta como instrucciones en el procesador 28, para acceder a la información o datos almacenados en registros de la base de datos 46 en respuesta a una consulta, en el que una consulta puede determinarse dinámicamente y ejecutarse por el sistema operativo 40, otras aplicaciones 42 o uno o más módulos. En una realización, la base de datos 46 puede comprender la base de datos de búsqueda de texto libre dinámica 56.
La Figura 3 ilustra una arquitectura de procesamiento ilustrativa 50 que puede proporcionarse por los sistemas de proveedor de servicios 12, el GDS 14, los sistemas de usuario 16, los sistemas de proveedor de datos 18 y/o el sistema de propuestas de viaje 20. La arquitectura de procesamiento 50 puede incluir la base de datos de búsqueda de texto libre dinámica 56 para almacenar relaciones 58 y puede incluir un gestor de búsqueda 52.
El gestor de búsqueda 52 puede operar para generar datos iniciales para la base de datos de búsqueda de texto libre dinámica 56. Para este fin, el gestor de búsqueda 52 puede recuperar datos de viaje en línea 54 de diversas fuentes en línea, tal como Wikipedia, anuncios de viajes y plataformas de redes sociales, y determinar asociaciones a partir de los datos. Cada asociación puede incluir una cadena de texto libre enlazada a un viaje. El gestor de búsqueda 52 puede configurarse para generar datos representativos de relaciones 58 basándose en las asociaciones, y transmitir tales datos a la base de datos de búsqueda de texto libre dinámica 56.
El gestor de búsqueda 52 puede configurarse adicionalmente para recibir peticiones de búsqueda de texto libre 59, tal como desde un sistema de usuario 16 del entorno operativo 10. Como se ha descrito anteriormente, una petición de búsqueda de texto libre 59 puede incluir criterios de búsqueda de viaje generalizados, pero carecer de un destino o fecha específicos. Tras recibir una petición de búsqueda de texto libre 59, el gestor de búsqueda 52 puede consultar la base de datos de búsqueda de texto libre dinámica 56 para una o más relaciones 58 que coinciden con la petición de búsqueda de texto libre 59. Las relaciones devueltas 58 pueden indicar propuestas de viaje pertinentes a las palabras clave 61 incluidas en una cadena de búsqueda de texto libre 60 de la petición de búsqueda de texto libre 59, tal como "soleado", "playa", "esquí" y similares. El gestor de búsqueda 52 puede determinar, por lo tanto, propuestas de viaje apropiadas basándose en la una o más relaciones 58 devueltas desde la base de datos de búsqueda de texto libre dinámica 56, y posteriormente visualizar tales propuestas de viaje a un usuario a través de una interfaz de propuestas de viaje 64. El usuario puede elegir, a continuación, un destino específico, seleccionar una o más fechas, buscar inventario disponible y/o contratar una o más reservas a través de la interfaz de propuestas de viaje 64.
Además, el gestor de búsqueda 52 puede actualizar dinámicamente las relaciones 58 de la base de datos de búsqueda de texto libre dinámica 56 para garantizar que las relaciones 58 siguen siendo precisas y significativas. Por ejemplo, el gestor de búsqueda 52 puede recibir una pluralidad de peticiones de búsqueda de texto libre 59 y devolver una o más propuestas de viaje para cada una de las peticiones de búsqueda de texto libre 59 basándose en una o más de las relaciones 58. El gestor de búsqueda 52 puede registrar a continuación un número de ocurrencias de eventos potenciales con respecto a las propuestas de viaje devueltas, tal como si se selecciona un destino seleccionado, si se selecciona una fecha dentro de intervalo de fechas propuesto y/o si se contrata una reserva basándose en una propuesta de viaje de vuelta. El gestor de búsqueda 52 puede actualizar a continuación una o más de las relaciones 58 basándose en el número de ocurrencias de los eventos potenciales.
La Figura 4 ilustra relaciones 58 que pueden almacenarse en la base de datos de búsqueda de texto libre dinámica 56. Cada relación 58 puede incluir una o más palabras clave 72, un viaje 74 y una ponderación 76. El viaje 74 puede incluir uno o más de un destino, un punto de venta y uno o más parámetros contextuales, tal como un marco temporal de viaje, un periodo de búsqueda (para comparación con la fecha en la que se envía una petición de búsqueda entrante) y/o una ciudad de salida. Por ejemplo, para el viaje 74 que incluye "Río", Río es el destino, agosto es el marco temporal de viaje y Londres es el punto de venta.
La ponderación 76 de una relación 58 dada generalmente indica la importancia de la una o más palabras clave 72 de la relación 58 dada con respecto al viaje 74 de la relación 58 dada. Por ejemplo, una relación 58 que incluye la palabra clave 72 "playa" y un viaje 74 que tiene un destino de Cancún, un marco temporal de viaje de agosto y un punto de venta de Londres puede incluir una ponderación 76 de doscientos. Otra relación 58 que incluye la palabra clave 72 "playa" y un viaje 74 que tiene un destino de Río, un marco temporal de viaje de agosto y un punto de venta de Londres puede incluir una ponderación 76 de ciento cincuenta. De acuerdo con este ejemplo, la palabra clave "playa" se asocia más significativamente con el viaje 74 que implica Cancún que el viaje 74 que implica Río, que puede indicar que Cancún es un mejor destino que Río para un potencial viajero que está ubicado en la actualidad en Londres y está buscando un viaje a un destino de playa en agosto.
En una realización, la base de datos de búsqueda de texto libre dinámica 56 puede incluir dos o más relaciones 58 que incluyen el mismo viaje 74, pero diferentes palabras clave 72. Para favorecer el almacenamiento de datos eficiente, una única instancia de datos del viaje común 74 puede almacenarse en la base de datos de búsqueda de texto libre dinámica 56, y cada una de las palabras clave 72 de las dos o más relaciones 58 puede enlazarse a la única instancia de datos dentro de la base de datos de búsqueda de texto libre dinámica 56. Esta situación se ilustra en la Figura 4 mediante el viaje 74 que incluye Ibiza como un destino. Este viaje 74 se enlaza a un grupo de palabras clave 72 que incluye "Baile" y "Playa", que pertenece a una relación 58, y también se enlaza a la palabra clave individual 72 "Baile", que pertenece a otra relación 58.
En una realización adicional, la base de datos de búsqueda de texto libre dinámica 56 puede incluir dos o más relaciones 58 que incluyen las mismas palabras clave 72, pero diferentes viajes 74. De nuevo, para favorecer el almacenamiento de datos eficiente, y para favorecer una identificación más rápida de los viajes 74 que coinciden con una petición de búsqueda de texto libre 59, puede almacenarse una única instancia de datos de las palabras clave comunes 72 en la base de datos de búsqueda de texto libre dinámica 56, y cada uno de los viajes 74 de las dos o más relaciones 58 puede enlazarse a la única instancia de datos dentro de la base de datos de búsqueda de texto libre dinámica 56. Esta situación se ilustra en la Figura 4 mediante la palabra clave 72 "playa", que se enlaza a los viajes 74 de cuatro relaciones 58 diferentes. Por lo tanto, tras buscar en la base de datos de búsqueda de texto libre dinámica 56 la palabra clave 72 "playa", los cuatro viajes 74 enlazados a la misma serán fácilmente evidentes.
La Figura 5 ilustra otras relaciones 58 que pueden almacenarse en la base de datos de búsqueda de texto libre dinámica 56. Como se ilustra, algunas instancias de datos pueden servir como palabras clave 72 para una relación 58 y un viaje 74 para otras relaciones 58. Por ejemplo, una de las relaciones 58 ilustradas incluye una palabra clave 72 de "Unión Europea" que se enlaza a un viaje 74a en el que el Reino Unido (UK) es el destino. "Unión Europea" también serve como la palabra clave 72 para otra relación 58 que tiene un viaje 74a en el que Francia es el destino. Los viajes 74a, sin embargo, también pueden servir como palabras clave para otras relaciones 58 que incluyen viajes 74b. Específicamente, "UK" puede servir como una palabra clave para un viaje 74b a Londres, y "Francia" puede servir como una palabra clave para un viaje 74b a París y/o para un viaje 74b a Niza. Una jerarquía de árbol de este tipo ayuda a reducir el almacenamiento electrónico ocupado por las relaciones 58, y también facilita la búsqueda cada vez más eficiente cuando se utilizan palabras clave más generales en una petición de búsqueda de texto libre 59.
Las Figuras 6-12 proporcionan procesos ilustrativos que pueden realizarse mediante la arquitectura de procesamiento 50. La Figura 6 ilustra un proceso 100 para generar datos representativos de una o más relaciones 58. Para comenzar, pueden recibirse datos de viaje en línea 54 (bloque 102). Por ejemplo, el gestor de búsqueda 52 de la arquitectura de procesamiento 50 puede explorar uno o más recursos de Internet tal como Wikipedia, plataformas de redes sociales y anuncios de viajes en línea para los datos de viaje en línea 54.
Posteriormente, la una o más relaciones 58 pueden identificarse a partir de los datos de viaje en línea 54 (bloque 104). Más particularmente, el gestor de búsqueda 52 puede identificar una o más asociaciones a partir de los datos de viaje en línea 54, incluyendo cada asociación una cadena de texto libre enlazada a un viaje. La cadena de texto libre de la asociación puede incluir una o más palabras clave, y el viaje de la asociación puede incluir un destino, un punto de venta y/u otros datos contextuales. Por ejemplo, los datos de viaje en línea 54 pueden incluir una asociación entre la cadena de texto libre "playas soleadas", que incluye la palabra clave "playa", y un viaje que incluye Cancún como un destino. Para cada asociación determinada a partir de los datos de viaje en línea 54, el gestor de búsqueda 52 puede extraer una o más palabras clave de la cadena de texto libre de la asociación. El gestor de búsqueda 52 puede generar, a continuación, datos representativos de las relaciones 58 basándose en las asociaciones determinadas de tal forma que cada relación 58 incluye la una o más palabras clave extraídas y el viaje de una determinada asociación. Por lo tanto, continuando con el ejemplo anterior, el gestor de búsqueda 52 puede generar datos representativos de una relación 58 que incluye una palabra clave 72 "playa" y un viaje 74 que tiene Cancún como un destino.
Después de o simultáneamente con la identificación de las relaciones 58, puede asignarse una ponderación 76 a cada una de las relaciones 58 de tal forma que cada relación 58 incluye una respectiva ponderación 76 (bloque 106). En otras palabras, el gestor de búsqueda 52 puede generar datos representativos de las relaciones 58 y cada relación 58 representada por los datos puede incluir una ponderación 76. Como se describe anteriormente, la ponderación 76 de una relación 58 dada puede indicar la importancia de la una o más palabras clave 72 de la relación 58 dada con respecto al viaje 74 de la relación 58 dada.
El gestor de búsqueda 52 puede configurarse para asignar la ponderación 76 a cada relación 58 basándose en una diversidad de reglas, que pueden programarse en el gestor de búsqueda 52 por adelantado. Más particularmente, el gestor de búsqueda 52 puede establecer inicialmente la ponderación 76 de cada relación 58 como cero y, posteriormente, aumentar la ponderación 76 de cada relación 58 basándose en las reglas. En una realización, la ponderación 76 asignada a una relación 58 dada puede depender del número de asociaciones determinadas a partir de los datos de viaje en línea 54 que enlazan las palabras clave 72 de la relación 58 dada con el viaje 74 de la relación 58 dada. Para cada tal asociación, el gestor de búsqueda 52 puede configurarse para aumentar la ponderación 76 para la relación 58 dada por un valor, que también puede programarse en el gestor de búsqueda 52 por adelantado.
Además, la ponderación 76 asignada a una relación 58 dada puede depender de las fuentes de los datos de viaje en línea 54 en los que se basa la identificación de la relación 58 dada. Por ejemplo, si el gestor de búsqueda 52 determina una asociación desde una fuente controlada de forma privada, tal como el sitio web de una aerolínea, a continuación el gestor de búsqueda 52 puede configurarse para aumentar la ponderación 76 para una relación 58 basándose en la asociación por un valor que es mayor que si la asociación se determinó de una fuente accesible públicamente o con menos reputación, tal como Wikipedia.
La ponderación 76 asignada a una relación 58 dada también puede depender del tipo de palabras clave 72 de la relación 58. Por ejemplo, si una palabra clave 72 de una relación 58 dada es un nombre de región geográfica, tal como "Europa", y el viaje 74 de la relación 58 dada incluye un destino dentro de esa región, a continuación la palabra clave 72 de la relación 58 dada es normalmente bastante significativa con respecto al viaje 74 de la relación 58 dada. A la inversa, una palabra clave 72 tal como "playa" puede ser de menor, igual o más importancia con respecto al viaje 74 de la relación 58 dada. Por lo tanto, cuando una relación 58 dada incluye palabras clave 72 que contienen una región geográfica e incluye un viaje 74 que tiene una ubicación en esa región como un destino, el gestor de búsqueda 52 puede configurarse para aumentar la ponderación 76 para la relación 58 dada por un valor, que puede predeterminarse, que es mayor que si las palabras clave 72 de la relación 58 dada no incluyen una región geográfica.
Una vez que se han creado las relaciones 58, y se ha asignado una ponderación 76 a cada relación 58, los datos representativos de las relaciones 58 pueden almacenarse en una base de datos (bloque 108). Más concreto, el gestor de búsqueda 52 puede transmitir los datos representativos de las relaciones 58 a la base de datos de búsqueda de texto libre dinámica 56 de la arquitectura de procesamiento 50. Al menos un dispositivo de almacenamiento de datos, tal como el dispositivo de memoria de almacenamiento masivo 32 del ordenador 26, puede alojar la base de datos de búsqueda de texto libre dinámica 56. Puede establecerse una conexión para comunicación de datos entre el al menos un dispositivo de almacenamiento de datos y el gestor de búsqueda 52, y los datos representativos de las relaciones 58 pueden transmitirse desde el gestor de búsqueda 52 al al menos un dispositivo de almacenamiento de datos que aloja la base de datos de búsqueda de texto libre dinámica 56 a través de la conexión establecida.
La Figura 7 ilustra un proceso 200 para extraer palabras clave de una cadena de texto libre, que puede realizarse en el bloque 104 del proceso 100 para identificar las relaciones 58 a partir de los datos de viaje en línea 54. Para comenzar, una cadena de texto libre puede traducirse a un idioma común (bloque 202). En particular, el gestor de búsqueda 52, tras recibir una cadena de texto libre, puede configurarse para traducir la cadena a un idioma que es familiar para el gestor de búsqueda 52. Por ejemplo, el gestor de búsqueda 52 puede programarse para extraer exclusivamente palabras clave escritas en inglés, y por tanto si una cadena de texto libre está escrita en francés, el gestor de búsqueda 52 puede traducir la cadena a inglés para la extracción de las palabras clave. De esta manera, los datos de viaje en línea 54 en los que el gestor de búsqueda 52 basa las relaciones 58 no se limitan a un único idioma, que habilita que la arquitectura de procesamiento 50 cree una base de datos de relaciones 58 cada vez más completa. Además, cuando un usuario envía una petición de búsqueda de texto libre 59 al gestor de búsqueda 52, que se describe en más detalle a continuación, la cadena de búsqueda de texto libre 60 de la petición de búsqueda de texto libre 59 puede estar escrita en uno o más de una pluralidad de idiomas, que hace que la arquitectura de procesamiento 50 sea cada vez más accesible a diferentes usuarios.
Después de que la cadena de texto libre se ha traducido a un idioma común, puede eliminarse el texto de ruido de la cadena traducida (bloque 204). El ruido de texto puede incluir términos de poco valor sustantivo con respecto a un viaje 74 de una relación 58. Por ejemplo, números y/o términos tales como "un", "a", "y", etc. generalmente no indican importancia con respecto a un viaje 74. Por lo tanto, para minimizar el almacenamiento de datos electrónicos ocupado por las palabras clave 72 de las relaciones 58, y para evitar la necesidad de buscar tales términos sin importancia cuando se recibe una petición de búsqueda de texto libre 59, el gestor de búsqueda 52 puede eliminar estos términos de ruido la cadena de texto libre.
A continuación pueden extraerse las palabras clave del resto de la cadena de texto libre (bloque 206). Más particularmente, cada uno de los términos restantes en la cadena de texto libre puede incluir una palabra raíz con alguna adición y/o modificación, tal como un prefijo o un sufijo. En general, la adición y/o modificación puede añadir poco valor sustantivo a la palabra clave. Por ejemplo, el término "soleado" puede incluir la palabra raíz "sol" y el sufijo "eado". El gestor de búsqueda 52 puede extraer, por lo tanto, las palabras raíz del resto de la cadena de texto libre, y utilizar las palabras raíz extraídas como las palabras clave 72. De esta manera, puede minimizarse de nuevo el almacenamiento de datos electrónicos ocupados por las palabras clave 72 de las relaciones 58 evitando el almacenamiento de variaciones de la misma palabra clave 72. Además, la búsqueda entre las palabras clave 72 es más rápida porque no se produce la búsqueda de meras variaciones de una misma palabra clave 72.
La Figura 8 ilustra un proceso 300 para responder a una petición de búsqueda de texto libre 59. Para comenzar, puede recibirse una petición de búsqueda de texto libre 59 (bloque 302), tal como en el gestor de búsqueda 52. Como se describe anteriormente, la petición de búsqueda de texto libre 59 puede incluir una cadena de búsqueda de texto libre 60 introducida un usuario, tal como a través de un sistema de usuario 16 del entorno operativo 10. La cadena de búsqueda de texto libre 60 no se limita a cualquier formato, idioma y/o contenido. La petición de búsqueda de texto libre 59 también puede incluir otros parámetros de búsqueda 62, tal como un punto de venta (es decir, la ubicación del usuario que emite la petición de búsqueda de texto libre), información acerca del usuario solicitante y/o criterios de búsqueda capturados de campos de entrada de datos configurados específicamente para recibir un cierto tipo de criterios de búsqueda en un formato especificado (por ejemplo, criterios de búsqueda introducidos por el usuario a través de selección dentro de una lista desplegable prerrellenada). Por ejemplo, tales criterios de búsqueda capturados pueden incluir un presupuesto, un intervalo de fechas, una región, actividades, un destino, etc. Después de que se recibe la petición de búsqueda de texto libre 59, pueden extraerse una o más palabras clave 61 de la cadena de búsqueda de texto libre 60 (bloque 304). El gestor de búsqueda 52 puede realizar esta extracción usando el proceso 200 descrito anteriormente.
Después de que se han extraído la una o más palabras clave 61, pueden determinarse iterativamente propuestas de viaje basándose en las relaciones 58 almacenadas en la base de datos de búsqueda de texto libre dinámica 56, las palabras clave extraídas 61 y/o lo otros parámetros de búsqueda 62 de la petición de búsqueda de texto libre 59 (bloque 306). Para este fin, el gestor de búsqueda 52 puede cruzar las relaciones 58 de la base de datos de búsqueda de texto libre dinámica 56 en múltiples iteraciones para resolver, como mínimo, un número preestablecido de relaciones 58 como candidatos para la petición de búsqueda de texto libre 59. En esta realización, en la nésima iteración, el gestor de búsqueda 52 puede resolver una relación 58 dada para la petición de búsqueda de texto libre 59 si el número total de diferencias entre la relación 58 dada y la petición de búsqueda de texto libre 59 no es más de n-1.
En una realización, el gestor de búsqueda 52 puede calcular el número total de diferencias entre una relación 58 dada y una petición de búsqueda de texto libre 59 añadiendo juntos (1) el número de diferencias entre las palabras clave 61 de la petición de búsqueda de texto libre 59 y las palabras clave 72 de la relación 58 dada y (2) el número de diferencias entre los otros parámetros de búsqueda 62 de la petición de búsqueda de texto libre 59 y el viaje 74 de la relación 58 dada. El número de diferencias entre las palabras clave 61 de una petición de búsqueda de texto libre 59 y las palabras clave 72 de una relación 58 dada puede ser igual al número de palabras clave 61 no presentes en las palabras clave 72 más el número de palabras clave 72 no presentes en las palabras clave 61. El número de diferencias entre los otros parámetros de búsqueda 62 de una petición de búsqueda de texto libre 59 y un viaje 74 de una relación 58 dada puede ser igual al número de otros parámetros de búsqueda 62 que no están presentes en el viaje 74.
Por lo tanto, en una primera iteración de respuesta a la petición de búsqueda de texto libre 59, el gestor de búsqueda 52 puede buscar relaciones 58 que incluyen las de palabras clave 72 que coinciden exactamente con las palabras clave extraídas 61 de la petición de búsqueda de texto libre 59 (es decir, la relación 58 no incluye ninguna palabra clave 72 distinta de las palabras clave 61 de la petición de búsqueda de texto libre 59) y un viaje 74 que tiene todos los otros parámetros de búsqueda 62 de la petición de búsqueda de texto libre 59. Si el gestor de búsqueda 52 no es capaz de resolver al menos un número preestablecido de relaciones 58 en la primera iteración, el gestor de búsqueda 52 puede realizar una segunda iteración con lo que el gestor de búsqueda 52 busca relaciones 58 que incluyen las palabras clave 72 que coinciden exactamente con las palabras clave extraídas 61 de la petición de búsqueda de texto libre 59 y un viaje 74 que tiene todos menos uno de los otros parámetros de búsqueda 62 de la petición de búsqueda de texto libre 59; o relaciones 58 que incluyen todos los demás parámetros de búsqueda 62 de la petición de búsqueda de texto libre 59 y palabras clave 72 que difieren de las palabras clave extraídas 61 de la petición de búsqueda de texto libre 59 por uno (es decir, la relación 58 incluye como palabras clave 72 todas menos una de las palabras clave extraídas 61 y no más, o incluye como palabras clave 72 todas las palabras clave extraídas 61 y una palabra clave 72 adicional). De nuevo, si el gestor de búsqueda 52 no es capaz de resolver al menos el número preestablecido de relaciones 58 después de la primera y segunda iteraciones, a continuación el gestor de búsqueda 52 puede realizar una tercera iteración, y así sucesivamente.
El gestor de búsqueda 52 puede continuar realizando iteraciones hasta que se haya resuelto al menos el número preestablecido de relaciones 58. Para este fin, después de cada iteración, el gestor de búsqueda 52 puede comprobar si al menos se ha resuelto el número preestablecido de relaciones 58. Si es así, a continuación el gestor de búsqueda 52 puede clasificar las relaciones 58 resueltas basándose en la ponderación 76 de cada relación 58 de tal forma que una mayor ponderación 76 corresponde a una clasificación más alta. El gestor de búsqueda 52 puede seleccionar, a continuación, un número de relaciones 58 resueltas mejor clasificadas que es igual al número preestablecido, y determinar propuestas de viaje basándose en los viajes 74 de las relaciones 58 mejor clasificadas seleccionadas. Por ejemplo, si un viaje 74 de una relación 58 mejor clasificada seleccionada incluye un destino y marco temporal de viaje dados, a continuación una propuesta de viaje basándose en ese viaje 74 puede incluir el destino y marco temporal de viaje dados del viaje 74.
Si el gestor de búsqueda 52 resuelve una relación 58 en una iteración posterior, que implica que la relación 58 resuelta difiere de la petición de búsqueda de texto libre 59, a continuación el gestor de búsqueda 52 puede configurarse para reducir la ponderación 76 de la relación 58 para los propósitos de clasificación. En una realización, el gestor de búsqueda 52 puede reducir la ponderación 76 de la relación 58 por un porcentaje igual a las diferencias totales entre la petición de búsqueda de texto libre 59 y la relación 58 con respecto al número total de palabras clave 72 y elementos en el viaje 74 de la relación 58, en la que un elemento del viaje 74 puede incluir un destino, un punto de venta y uno cualquiera de los parámetros contextuales contenidos en el mismo. Por tanto, por ejemplo, si la ponderación 76 de una relación 58 resuelta es cien, el número total de diferencias entre la petición de búsqueda de texto libre 59 y la relación 58 resuelta es uno, y la relación 58 resuelta incluye una palabra clave 72 y un viaje 74 que tiene tres elementos, a continuación la ponderación 76 puede reducirse por 1/4 o 25 % a un valor setenta y cinco.
En otra realización, el gestor de búsqueda 52 puede reducir la ponderación 76 por un porcentaje igual al número de diferencias entre las palabras clave 61 de la petición de búsqueda de texto libre 59 y las palabras clave 72 de la relación 58 con respecto al número total de palabras clave 72, y a continuación reducir este resultado por un porcentaje que es igual al número de diferencias entre los otros parámetros de búsqueda 62 de la petición de búsqueda de texto libre 59 y el viaje 74 de la relación 58 con respecto al número de elementos en el viaje 74. Como alternativa, estas operaciones pueden invertirse. En otra realización más, el gestor de búsqueda también puede calcular de forma separada estas reducciones basándose en la ponderación original 76, y posteriormente reducir la ponderación original 76 por la suma de las reducciones calculadas.
Un ejemplo de determinación de forma iterativa de propuestas de viaje se describirá ahora con referencia a las relaciones 58 ilustradas en la Figura 4, suponiendo que tres es el número preestablecido de relaciones 58 que necesitan resolverse, como mínimo, y utilizarse para determinar las propuestas de viaje. Si el gestor de búsqueda 52 recibe una petición de búsqueda de texto libre 59 que incluye una cadena de búsqueda de texto libre 60 que recita "playa" y otro parámetro de búsqueda 62 que indica que París es el punto de venta, en una primera iteración, el gestor de búsqueda 52 puede resolver dos relaciones 58: (1) la relación 58 que incluye Ibiza como un destino y una ponderación 76 de ciento ochenta; y (2) la relación 58 que incluye Corfú como un destino y una ponderación 76 de ciento sesenta. Cada una de estas relaciones 58 incluye ni más ni menos palabras clave 72 que "playa" e incluye un viaje 74 con París como el punto de venta. Por consiguiente, no existen "diferencias" entre estas relaciones 58 y la petición de búsqueda de texto libre 59.
Continuando con el ejemplo anterior, debido a que el gestor de búsqueda 52 puede resolver únicamente dos relaciones 58 en la primera iteración, y el número preestablecido de relaciones 58 mínimas que necesitan resolverse es tres, el gestor de búsqueda 52 puede proceder a realizar una segunda iteración para resolver al menos una relación 58 más. En la segunda iteración, pueden buscarse las relaciones 58 restantes para aquellas que incluyen el otro parámetro de búsqueda 62 de la petición de búsqueda de texto libre 59 y palabras clave 72 que difieren de la palabra clave 61 de la petición de búsqueda de texto libre 59 por una; o aquellas que incluyen como palabras clave 72 únicamente la palabra clave 61 de la petición de búsqueda de texto libre 59 y un viaje 74 carente del otro parámetro de búsqueda 62 de la petición de búsqueda de texto libre 59.
La relación 58 que incluye el destino Río y una ponderación 76 de ciento cincuenta tiene una única palabra clave 72 de "playa", que coincide exactamente con la palabra clave 61 de la petición de búsqueda de texto libre 59, y tiene un viaje 74 que no tiene el otro parámetro de búsqueda 62 de la petición de búsqueda de texto libre 59, a saber, un punto de venta de París. El gestor de búsqueda 52 puede resolver, por lo tanto, esta relación 58 en la segunda iteración. Sin embargo, debido a que esta relación 58 incluye un viaje 74 que tiene tres elementos y difiere del otro parámetro de búsqueda 62 de la petición de búsqueda de texto libre 59 por uno (es decir, Londres frente a París como un punto de venta), el gestor de búsqueda 52 puede reducir la ponderación 76 de la relación 58 por un tercio para los propósitos de clasificación. Por lo tanto, la ponderación 76 de esta relación 58 que incluye el destino de Río puede reducirse a cien.
La relación 58 que incluye Cancún como un destino y una ponderación 76 de doscientos también tiene una única palabra clave 72 de "playa", que coincide exactamente con la palabra clave 61 de la petición de búsqueda de texto libre 59, y tiene un viaje 74 que no tiene el otro parámetro de búsqueda 62 de la petición de búsqueda de texto libre 59, a saber, un punto de venta de París. El gestor de búsqueda 52 también puede resolver, por lo tanto, esta relación 58 en la segunda iteración. Sin embargo, debido a que esta relación 58 incluye un viaje 74 que tiene tres elementos y difiere del otro parámetro de búsqueda 62 de la petición de búsqueda de texto libre 59 por uno (es decir, Londres frente a París como un punto de venta), el gestor de búsqueda 52 puede reducir la ponderación 76 de esta relación 58 por un tercio para los propósitos de clasificación. Por consiguiente, la ponderación 76 de esta relación 58 que incluye Cancún como un destino puede reducirse a ciento treinta tres (133).
Además, la relación 58 que incluye Chipre como un destino y una ponderación 76 de ciento cuarenta incluye el otro parámetro de búsqueda 62 de la petición de búsqueda de texto libre 59, incluye la palabra clave 72 "playa" y también incluye una palabra clave 72 adicional (es decir, "baile"). Por lo tanto, el gestor de búsqueda 52 también puede resolver esta relación 58 en la segunda iteración. Sin embargo, debido a que esta relación 58 incluye dos palabras clave 72 y difiere de la palabra clave 61 de la petición de búsqueda de texto libre 59 por una, el gestor de búsqueda 52 puede reducir la ponderación 76 de esta relación 58 por la mitad para los propósitos de clasificación. Por lo tanto, la ponderación 76 de esta relación 58 que incluye Chipre como un destino puede reducirse a ciento veinticinco.
Por lo tanto, en este ejemplo, el gestor de búsqueda 52 resuelve cinco relaciones 58 después de la segunda iteración. Las tres mejores de estas relaciones 58 en ponderación, teniendo en cuanta todas las reducciones, incluyen las que tienen un viaje 74 a Corfú en agosto, un viaje 74 a Ibiza en agosto y un viaje 74 a Cancún en agosto. Estos viajes 74 pueden utilizarse para presentar las propuestas de viaje en respuesta a la petición de búsqueda de texto libre 59.
Volviendo a la Figura 8, una vez determinadas, las propuestas de viaje pueden visualizare a un usuario (bloque 308), tal como a través del sistema de usuario 16 del entorno operativo 10. En una realización, el gestor de búsqueda 52 puede generar una interfaz de propuestas de viaje 64 que indica las propuestas de viaje determinadas. Por ejemplo, la interfaz de propuestas de viaje 64 puede incluir una visualización de mapa con cada destino de las propuestas de viaje determinadas marcado con un círculo o destacado de otra manera. Además, la interfaz de propuestas de viaje 64 puede incluir una visualización de histograma que incluye el marco temporal de viaje de cada propuesta de viaje determinada. Un usuario puede utilizar la interfaz de propuestas de viaje 64 para seleccionar uno de los destinos de la visualización de mapa, seleccionar una o más fechas en la visualización de histograma, buscar vuelos disponibles u otros alojamientos basándose en las selecciones y contratar un viaje. En algunas realizaciones, la interfaz de propuestas de viaje 64 puede mostrar la visualización de histograma en respuesta a una selección de un destino en el mapa, incluyendo la visualización de histograma mostrada el marco temporal de viaje de la propuesta de viaje para el destino seleccionado. Como alternativa, el proceso puede funcionar a la inversa, significando que la interfaz de propuestas de viaje 64 puede mostrar el mapa en respuesta a una selección de una o más fechas en la visualización de histograma, incluyendo el mapa destinos de propuestas de viaje que incluyen las fechas seleccionadas. Además, la interfaz de propuestas de viaje 64 puede configurarse para ir a una página de ventas adicionales, en la que un usuario puede buscar y/o contratar vuelos y otros alojamientos, en respuesta a una o más fechas seleccionándose en la visualización de histograma y/o seleccionándose un destino en el mapa.
La Figura 9 ilustra un proceso 400 para actualizar dinámicamente la ponderación 76 de una relación 58 almacenada en la base de datos de búsqueda de texto libre dinámica 56 basándose en un periodo de peticiones de búsqueda de texto libre 59 recibidas. Para comenzar, pueden generarse datos iniciales para la base de datos de búsqueda de texto libre dinámica 56 (bloque 402). Los datos pueden representar una o más relaciones 58 que incluyen al menos una palabra clave 72, un viaje 74 y una ponderación 76. El gestor de búsqueda 52 puede generar los datos iniciales que utilizan el proceso 100 descrito anteriormente. Posteriormente, pueden recibirse una o más peticiones de búsqueda de texto libre 59 (bloque 404), tales como en el gestor de búsqueda 52 desde los sistemas de usuario 16 del entorno operativo 10. Como se ha descrito anteriormente, cada una de las peticiones de búsqueda de texto libre 59 puede incluir una cadena de búsqueda de texto libre 60, que puede estar escrita en lenguaje natural y no se limita a ningún formato, idioma o contenido.
Después de que se han recibido, respondido y procesado todas las peticiones de búsqueda de texto libre 59 del periodo designado, que puede incluir el rastreo de ocurrencia de eventos con respecto a las propuestas de viaje devueltas para las peticiones de búsqueda de texto libre 59, puede calcularse una ponderación 76 actualizada para una relación 58 dada basándose en las peticiones de búsqueda de texto libre 59 recibidas (bloque 406), o más particularmente el procesamiento de las peticiones de búsqueda de texto libre 59 recibidas. La ponderación 76 actualizada calculada para la relación 58 dada puede diferir de la ponderación original 76 asignada a la relación 58 dada. Los datos anteriormente generados del bloque 402 pueden transformarse, a continuación, a datos actualizados basándose en la ponderación 76 actualizada (bloque 408). En particular, el gestor de búsqueda 52 puede actualizar los datos anteriormente generados insertando la ponderación 76 actualizada en los datos anteriormente generados y eliminando la ponderación antigua 76 para la relación 58 dada. De esta manera, los datos actualizados pueden representar la relación 58 dada de los datos anteriormente generados, pero con la ponderación 76 actualizada.
La Figura 10 ilustra un proceso 500 para calcular una ponderación 76 actualizada para una relación 58 dada basándose en las peticiones de búsqueda de texto libre 59 recibidas (bloque 406 del proceso 400). Para comenzar, puede definirse una pluralidad de eventos potenciales para la relación 58 dada (bloque 502). Cada evento definido puede incluir una acción que puede producirse con respecto a una propuesta de viaje devuelta basándose en la relación 58 dada en respuesta a una petición de búsqueda de texto libre 59. Por ejemplo, un evento puede incluir la acción de un usuario seleccionando un destino de la propuesta de viaje devuelta, tal como a través de la visualización de mapa de la interfaz de propuestas de viaje 64. Otro evento puede incluir la acción de un usuario seleccionando una o más fechas dentro del marco temporal de viaje de la propuesta de viaje devuelta, tal como a través de la visualización de histograma de la interfaz de propuestas de viaje 64. Otro evento puede incluir la acción de un usuario contratando un viaje basándose en la propuesta de viaje devuelta.
Después de que se asigna una ponderación inicial 76 a una relación 58, el gestor de búsqueda 52 puede utilizar los eventos definidos para la relación 58 para actualizar dinámicamente la ponderación 76 de la relación 58. Específicamente, el gestor de búsqueda 52 puede calcular una ponderación 76 actualizada para la relación 58 usando la siguiente fórmula:
ponderación =£¡=t a n N(i)w(i) (Ecuación A)
en la que n es igual al número de eventos que pueden producirse con respecto a una propuesta de viaje devuelta basándose en la relación 58, N(i) es el número de veces que se ha producido el iésimo evento en un periodo de peticiones de búsqueda de texto libre 59 recibidas y w(i) es la ponderación que corresponde al iésimo evento. Cuando se produce un evento con respecto a una propuesta de viaje devuelta basándose en una relación 58, la ocurrencia puede indicar generalmente que el gestor de búsqueda 52 resolvió apropiadamente la relación 58 cuando se responde a una petición de búsqueda de texto libre 59 recibida. Por consiguiente, la Ecuación A se configura de tal forma que, cuanto más se produzca un evento con respecto a una propuesta de viaje devuelta basándose en la relación 58, mayor será la ponderación 76 de la relación 58 para aumentar la probabilidad de que el gestor de búsqueda 52 continúe resolviendo la relación 58 cuando sea apropiado. Además, la ponderación w(i) asociada con cada evento puede indicar la importancia del evento con respecto a la ponderación 76 de la relación 58. Por ejemplo, un evento de contratación puede asociarse con una mayor ponderación w(i) que un evento de selección de destino, ya que el evento de contratación puede indicar más firmemente que el gestor de búsqueda 52 resolvió apropiadamente la relación 58. Como se describe en detalle adicional a continuación, la ponderación w(i) para cada evento puede actualizarse dinámicamente basándose en la ocurrencia de los eventos en un periodo de peticiones de búsqueda de texto libre 59 recibidas.
En una realización, la ponderación calculada en la Ecuación A puede utilizarse como la ponderación 76 actualizada para la relación 58. Como alternativa, la suma de la ponderación calculada en la Ecuación A y la ponderación anterior 76 de la relación 58 puede utilizarse como la ponderación 76 actualizada para la relación 58. En aún otra alternativa, el producto de la ponderación calculada en la Ecuación A y la ponderación anterior 76 de la relación 58 puede usarse como la ponderación 76 actualizada para la relación 58.
Volviendo al proceso 500 de la Figura 10, después de que se han definido los eventos potenciales para que la relación 58 dada se actualice, puede determinarse si el periodo de peticiones de búsqueda de texto libre 59 ha finalizado (bloque 504). Más particularmente, el periodo puede definir un número de peticiones de búsqueda de texto libre 59 en las que el gestor de búsqueda 52 tiene que basar el cálculo de una ponderación 76 actualizada para la relación 58 dada. Por ejemplo, el periodo puede indicar que el gestor de búsqueda 52 debería calcular la ponderación 76 actualizada basándose en mil peticiones de búsqueda de texto libre 59 recibidas. En otras palabras, en este ejemplo, la ponderación 76 actualizada no debería calcularse hasta que el gestor de búsqueda 52 haya recibido y procesado mil peticiones de búsqueda de texto libre 59. Como un ejemplo adicional, el periodo puede indicar que el gestor de búsqueda 52 debería calcular la ponderación 76 actualizada basándose en una petición de búsqueda de texto libre 59 recibida. De esta manera, la ponderación 76 para una relación 58 dada puede recalcularse o actualizarse cada vez que se recibe una petición de búsqueda de texto libre 59.
Si el periodo de peticiones de búsqueda de texto libre 59 no ha finalizado aún, a continuación cuando se recibe otra petición de búsqueda de texto libre 59 (rama de "SÍ" del bloque 504), puede hacerse un ajuste temporal a las ponderaciones de evento w(i) que corresponden a los eventos definidos para la relación 58 dada a actualizar (bloque 506). En particular, el gestor de búsqueda 52 puede aplicar a la siguiente ecuación cada ponderación de evento:
r(i) = w(i)+KV/100 (Ecuación B)
en la que w(i) es la ponderación de evento original que corresponde al iésimo evento, K es un valor seleccionado de forma aleatoria, tal como -1, 0 o 1, V es una velocidad de aprendizaje y r(i) es la ponderación temporalmente ajustada para el iésimo evento.
Después de que se han ajustado temporalmente las ponderaciones de evento, pueden devolverse una o más propuestas de viaje para la petición de búsqueda de texto libre 59 recibida basándose, al menos en parte, en las ponderaciones de evento ajustadas temporalmente (bloque 508). En particular, el gestor de búsqueda 52 puede calcular una ponderación 76 temporal para la relación 58 dada a actualizar usando la Ecuación A y las ponderaciones de evento ajustadas temporalmente, y pueden devolverse posteriormente una o más propuestas de viaje basándose en relaciones 58 resueltas, que pueden incluir la relación 58 dada a actualizar, usando el proceso 300.
Tras la satisfacción de un evento potencial con respecto a una propuesta de viaje devuelta basándose en la relación 58 dada a actualizar, puede aumentarse un contador asociado con el evento (bloque 510). Específicamente, cada uno de los eventos potenciales definidos para la relación 58 dada a actualizar puede asociarse con una pluralidad de contadores, asociándose adicionalmente cada uno de la pluralidad de contadores con uno de una pluralidad de posibles ajustes temporales que pueden aplicarse a las ponderaciones w(i) que corresponden a los eventos. Por lo tanto, cuando uno de una pluralidad de posibles ajustes temporales se ha aplicado a las ponderaciones de evento que corresponden a los eventos definidos para la relación 58 dada a actualizar, y una propuesta de viaje se devuelve posteriormente basándose en la relación 58 dada a actualizar, a continuación tras la ocurrencia de un evento potencial, pueden aumentarse el contador asociado con ese evento y el ajuste temporal aplicado. De esta manera, los contadores asociados con los eventos potenciales rastrean tanto el número de ocurrencias de cada evento potencial como los ajustes temporales que conducen a la ocurrencia de los eventos potenciales.
Por lo tanto, en la Ecuación B, en la que el ajuste temporal aplicado en las ponderaciones w(i) depende del valor de K, cada evento potencial puede tener un contador asociado con la situación en la que K=1, un contador asociado con la situación en la que K=0 y un contador asociado con la situación en la que K=-1. Por lo tanto, tras la satisfacción de un evento potencial con respecto a una propuesta de viaje devuelta basándose en la relación 58 dada a actualizar, si la propuesta de viaje se devolvió cuando se aplicó un ajuste temporal que corresponde a K=0, a continuación se incrementa el contador para el evento potencial satisfecho asociado con la situación en la que K=0. En otras palabras, tras la satisfacción de un evento potencial con respecto a una propuesta de viaje devuelta basándose en la relación 58 dada a actualizar, el gestor de búsqueda 52 puede aumentar el valor del contador asociado tanto con el evento potencial como el ajuste temporal en el que se basó la devolución de la propuesta de viaje.
Una vez que el periodo establecido de peticiones de búsqueda de texto libre 59 ha finalizado (rama de "NO" del bloque 504), para cada evento potencial definido para la relación 58 dada a actualizar, pueden compararse los contadores asociados con el evento potencial (bloque 512). En particular, el gestor de búsqueda 52 puede determinar el contador más alto para cada evento potencial definido. Posteriormente, puede alterarse la ponderación de evento w(i) que corresponde a cada evento potencial de acuerdo con el ajuste temporal asociado con el contador asociado con el evento potencial que tiene el valor más alto (bloque 514). Por lo tanto, para un evento potencial dado, si el contador que corresponde a la situación en la que K=1 tiene el valor más alto después de que el periodo establecido de peticiones de búsqueda de texto libre 59 ha finalizado, a continuación el gestor de búsqueda 52 puede ajustar la ponderación w(i) asociada con el evento potencial dado añadiendo KV/100, en la que K=1, a la ponderación actual w(i) asociada con el evento potencial dado. Una vez que se ha alterado la ponderación de evento que corresponde a cada evento potencial (es decir, a no ser que el contador asociado más alto con un evento potencial se asocie con la situación en la que K=0), la ponderación 76 actualizada para la relación 58 dada a actualizar puede calcularse basándose en las ponderaciones de evento alteradas y el número de veces que los eventos potenciales definidos para la relación 58 se satisficieron durante el periodo establecido de las peticiones de búsqueda de texto libre 59 (bloque 516), tal como usando la Ecuación A.
La Figura 11 ilustra un proceso ilustrativo 600 para reducir el número de palabras clave 72 almacenadas en la base de datos de búsqueda de texto libre dinámica 56 utilizando correlación estadística entre las palabras clave 72 de diferentes relaciones 58. Más particularmente, el proceso 600 puede facilitar la eliminación de relaciones 58 que no son significativas, que pueden liberar espacio de almacenamiento electrónico y reducir el tiempo de búsqueda de peticiones de búsqueda de texto libre 59 recibidas. Para los propósitos de este ejemplo, puede suponerse que una relación 58 en la base de datos de búsqueda de texto libre dinámica 56 incluye N palabras clave 72, otra relación 58 en la base de datos de búsqueda de texto libre dinámica incluye como palabras clave 72 únicamente un subconjunto de las N palabras clave 72, y otra relación 58 almacenada en la base de datos de búsqueda de texto libre dinámica 56 incluye como palabras clave 72 únicamente las de las N palabras clave 72 que no están en el subconjunto de la relación 58 anterior. Estas relaciones 58 pueden denominarse en lo sucesivo como las "relaciones supuestas" para los propósitos de este ejemplo.
Para comenzar, las peticiones de búsqueda de texto libre 59 pueden generarse y/o recibirse internamente correspondiendo a cada una de las relaciones 58 supuestas expuestas anteriormente (bloque 602). Más particularmente, cada una de estas peticiones de búsqueda de texto libre 59 puede incluir una cadena de texto libre que tiene las N palabras clave 72, el subconjunto de N palabras clave 72, o aquellas de las N palabras clave 72 que no están en el subconjunto, respectivamente. Las propuestas de viaje y/o relaciones 58 pueden resolverse, a continuación, para cada una de las peticiones de búsqueda de texto libre 59, tal como usando el proceso 300 descrito anteriormente (bloque 604). Posteriormente, las propuestas de viaje y/o relaciones 58 resueltas para cada una de las peticiones de búsqueda de texto libre 59 pueden compararse para determinar un grado de diferencia ("DOD") entre las propuestas de viaje y/o relaciones 58 resueltas (bloque 606).
Si el DOD entre las propuestas de viaje y/o relaciones 58 resueltas para la petición de búsqueda de texto libre 59 que tienen las N palabras clave 72 y propuestas de viaje y/o relaciones 58 resueltas para cada una de las otras peticiones de búsqueda de texto libre 59 es cero, o está por debajo de un umbral predeterminado (rama de "NO" del bloque 608), entonces puede no haber diferencia significativa entre la relación 58 que incluye las N palabras clave 72 y las otras relaciones 58 que se suponen anteriormente que están en la base de datos de búsqueda de texto libre dinámica 56. En otras palabras, puede haber una baja correlación dentro de la base de datos de búsqueda de texto libre dinámica 56 entre el subconjunto de N palabras clave 72 y aquellas de las N palabras clave 72 que no están en el subconjunto. Por consiguiente, para reducir la cantidad de datos almacenados e incrementar la eficiencia de cálculo teniendo menos relaciones 58 que buscar, el gestor de búsqueda 52 puede eliminar la relación 58 que incluye todas las N palabras clave 72 de la base de datos de búsqueda de texto libre dinámica 56, pero mantener intactas las otras relaciones 58 supuestas (bloque 610). Como alternativa, si el DOD es mayor que o igual al umbral predeterminado (rama de "SÍ" del bloque 608), entonces la correlación dentro de la base de datos de búsqueda de texto libre dinámica 56 entre el subconjunto de N palabras clave 72 y aquellas de las N palabras clave 72 que no están en el subconjunto puede ser alta, de tal forma que existe una diferencia significativa entre la relación 58 que incluye las N palabras clave 72 y las otras relaciones 58 supuestas dentro de la base de datos de búsqueda de texto libre dinámica 56. En este caso, el gestor de búsqueda 52 puede mantener, por lo tanto, la relación 58 que incluye todas las N palabras clave 72 en la base de datos de búsqueda de texto libre dinámica 56, así como las otras relaciones 58 supuestas (bloque 612).
La Figura 12 ilustra otro proceso 700 para reducir el número de palabras clave 72 almacenadas en la base de datos de búsqueda de texto libre dinámica 56 eliminando relaciones 58 no significativas. Si, después de un tiempo configurable, una relación 58 no ha conducido a la ocurrencia de ningún evento, a continuación puede disminuirse la ponderación 76 de la relación 58, tal como a través del proceso 400 descrito anteriormente. Específicamente, los contadores asociados con los eventos potenciales definidos para la relación 58 pueden no aumentar o pueden aumentar de manera no significativa, lo que puede reducir la ponderación 76 de la relación 58 hacia cero. Por lo tanto, para eliminar una relación 58 de este tipo de la base de datos de búsqueda de texto libre dinámica 56, puede recuperarse la ponderación 76 de la relación 58 (bloque 702). Si la ponderación 76 está por debajo de un umbral establecido, el gestor de búsqueda 52 puede eliminar la relación 58 de la base de datos de búsqueda de texto libre dinámica 56 (bloque 708). A la inversa, si la ponderación 76 recibida es mayor que (o igual a) el umbral establecido, el gestor de búsqueda 52 puede mantener la relación 58 en la base de datos de búsqueda de texto libre dinámica 56 (bloque 706).
En general, las rutinas ejecutadas para implementar las realizaciones de la invención, ya se implementen como parte de un sistema operativo o una aplicación, componente, programa, objeto, módulo o secuencia de instrucciones específico, o incluso un subconjunto de los mismos, se pueden denominar en el presente documento "código de programa informático" o simplemente "código de programa". Habitualmente, el código de programa comprende instrucciones legibles por ordenador que residen en diversos instantes en diversos dispositivos de memoria y almacenamiento en un ordenador y que, cuando se leen y ejecutan por uno o más procesadores en un ordenador, dan lugar a que ese ordenador realice las operaciones necesarias para ejecutar operaciones y/o elementos que materializan los diversos aspectos de las realizaciones de la invención. Instrucciones de programa legibles por ordenador para efectuar operaciones de las realizaciones de la invención pueden ser, por ejemplo, lenguaje de ensamblaje o bien código fuente o bien código objeto escrito en cualquier combinación de uno o más lenguajes de programación.
Diverso código de programa descrito en este documento puede identificarse basándose en la aplicación dentro de la que se implementa en realizaciones específicas de la invención. Sin embargo, debería apreciarse que cualquier nomenclatura de programa particular a continuación se usa meramente para conveniencia y, por lo tanto, la invención no debería limitarse a usar solamente en cualquier aplicación especificada identificada y/o implícita por tal nomenclatura. Adicionalmente, dado el número generalmente infinito de maneras en las que pueden organizarse programas informáticos en rutinas, procedimientos, métodos, módulos, objetos y similares, así como las diversas maneras en las que la funcionalidad de programa puede asignarse entre diversas capas de software que están residentes dentro de un ordenador típico (por ejemplo, sistemas operativos, librerías, API, aplicaciones, subprogramas, etc.), debería apreciarse que las realizaciones de la invención no se limitan a la organización específica y asignación de funcionalidad de programa descritas en este documento.
El código de programa incorporado en cualquiera de las aplicaciones/módulos descritos en este documento se puede distribuir individual o colectivamente como un producto de programa en una diversidad de diferentes formas. En particular, el código de programa puede distribuirse usando un medio de almacenamiento legible por ordenador que tiene instrucciones de programa legibles por ordenador en el mismo para provocar que un procesador efectúe aspectos de las realizaciones de la invención.
Los medios de almacenamiento legibles por ordenador, que son inherentemente no transitorios, pueden incluir medios tangibles volátiles y no volátiles, y extraíbles y no extraíbles implementados en cualquier método o tecnología para el almacenamiento de información, tal como instrucciones legibles por ordenador, estructuras de datos, módulos de programa u otros datos. Los medios de almacenamiento legibles por ordenador pueden incluir adicionalmente RAM, ROM, memoria de solo lectura borrable y programable (EPROM), memoria de solo lectura eléctricamente borrable y programable (EEPROM), memoria flash u otra tecnología de memoria de estado sólido, memoria de sólo lectura de disco compacto (CD-ROM) portátil u otro almacenamiento óptico, casetes magnéticos, cinta magnética, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que se pueda usar para almacenar la información deseada y que puede leerse por un ordenador. Un medio de almacenamiento legible por ordenador no debería interpretarse como señales transitorias en sí (por ejemplo, ondas de radio u otras ondas electromagnéticas que se propagan, ondas electromagnéticas que se propagan a través de un medio de transmisión tal como una guía de ondas, o señales eléctricas transmitidas a través de un alambre). Instrucciones de programa legibles por ordenador pueden descargarse a un ordenador, otro tipo de aparato de procesamiento de datos programable u otro dispositivo desde un medio de almacenamiento legible por ordenador o a un ordenador externo o dispositivo de almacenamiento externo a través de una red.
Pueden usarse instrucciones de programa legibles por ordenador almacenadas en un medio legible por ordenador para dirigir que un ordenador, otros tipos de aparato de procesamiento de datos programable u otros dispositivos funcionen de una manera particular, de tal forma que las instrucciones almacenadas en el medio legible por ordenador producen un artículo de fabricación que incluye instrucciones que implementan las funciones, actos y/u operaciones especificados en el diagrama de flujos, diagrama de secuencias y/o diagramas de bloque. Las instrucciones de programa informáticas pueden proporcionarse a uno o más procesadores de un ordenador de fin general, un ordenador de fin especial, u otro aparato de procesamiento de datos programable para producir una máquina, de tal forma que las instrucciones, que se ejecutan a través del uno o más procesadores, provocan que se realicen una serie de cálculos para implementar las funciones, actos y/u operaciones especificados en el diagrama de flujos, diagrama de secuencias y/o diagramas de bloque.
En ciertas realizaciones alternativas, las funciones, actos y/u operaciones especificados en el diagrama de flujos, diagrama de secuencias y/o diagramas de bloque pueden reordenarse, procesarse en serie y/o procesarse simultáneamente consistentes con realizaciones de la invención. Además, cualquiera de los diagramas de flujo, diagramas de secuencia y/o diagramas de bloques puede incluir más o menos bloques de los ilustrados, de forma consistente con las realizaciones de la invención.
La terminología usada en este documento es para el propósito de describir únicamente realizaciones particulares y no se pretende que sea limitante de las realizaciones de la invención. Como se usa en el presente documento, se pretende que las formas singulares "un", "una", "el" y "la" incluyan también las formas plurales, a no ser que el contexto indique claramente lo contrario. Se entenderá adicionalmente que los términos "comprende" y/o "que comprende" cuando se usan en esta memoria descriptiva, especifican la presencia de características indicadas, elementos integrantes, etapas, operaciones, elementos y/o componentes, pero no excluyen la presencia o adición de una o más otras características, elementos integrantes, etapas, operaciones, elementos, componentes y/o grupos de los mismos. Adicionalmente, en la medida en que los términos "incluye", "que tiene", "tiene", "con", "comprendido de", o variantes de los mismos se usan en o bien la descripción detallada o bien las reivindicaciones, tales términos se conciben para ser inclusivos de una manera similar al término "que comprende".
Mientras toda la invención se ha ilustrado mediante una descripción de diversas realizaciones y mientras estas realizaciones se han descrito en considerable detalle, no es la intención del solicitante restringir o de cualquier forma limitar el alcance de las reivindicaciones adjuntas a tal detalle. A los expertos en la materia se les ocurrirán fácilmente ventajas y modificaciones adicionales. Por lo tanto, la invención no está limitada, en sus aspectos más amplios, a los detalles específicos, aparato y método representativos y ejemplos ilustrativos mostrados y descritos. Por consiguiente, pueden hacerse desviaciones de tales detalles sin alejarse del alcance de las reivindicaciones.

Claims (12)

REIVINDICACIONES
1. Un método (400) para implementar una base de datos de búsqueda de texto libre dinámica, almacenando la base de datos de búsqueda de texto libre dinámica primeros datos, generados por al menos un procesador, que representan una primera relación que incluye una primera palabra clave, un primer viaje y un primer valor de ponderación, comprendiendo el método (400):
recibir, por el al menos un procesador, una pluralidad de peticiones de búsqueda de texto libre (404);
calcular, por el al menos un procesador, un segundo valor de ponderación para la primera relación basándose en las peticiones de búsqueda de texto libre (406), en donde el segundo valor de ponderación difiere del primer valor de ponderación; y
transformar, por el al menos un procesador, los primeros datos en segundos datos (408) insertando el segundo valor de ponderación en los primeros datos de tal forma que la primera relación incluye el segundo valor de ponderación,
en donde calcular el segundo valor de ponderación para la primera relación basándose en las peticiones de búsqueda de texto libre (406) comprende:
definir una pluralidad de eventos potenciales (502) para la primera relación que puede producirse con respecto a una propuesta de viaje de vuelta en respuesta a las peticiones de búsqueda de texto libre basándose en la primera relación;
para cada petición de búsqueda de texto libre, consultar la base de datos de búsqueda de texto libre dinámica para la primera relación que coincida con la petición de búsqueda de texto libre y devolver una o más propuestas de viaje basándose en la primera relación;
registrar un número de ocurrencias de cada evento potencial con respecto a la una o más propuestas de viaje devueltas para las peticiones de búsqueda de texto libre; y
calcular el segundo valor de ponderación para la primera relación basándose en el número de ocurrencias, y
en donde devolver la una o más propuestas de viaje basándose en la primera relación comprende:
para cada petición de búsqueda de texto libre:
aplicar un ajuste temporal a una pluralidad de ponderaciones de evento para definir ponderaciones de evento temporalmente ajustadas (506), en donde cada ponderación de evento corresponde a uno de los eventos potenciales; y
devolver la una o más propuestas de viaje basándose en las ponderaciones de evento temporalmente ajustadas (508).
2. El método (400) de la reivindicación 1, comprendiendo adicionalmente:
establecer una conexión para comunicación de datos entre al menos un dispositivo de almacenamiento de datos y un sistema de propuestas de viaje que incluye el al menos un procesador, en donde el al menos un dispositivo de almacenamiento de datos aloja la base de datos de búsqueda de texto libre dinámica; y
transmitir los primeros datos desde el sistema de propuestas de viaje al al menos un dispositivo de almacenamiento de datos a través de la conexión.
3. El método de la reivindicación 1 o la reivindicación 2, en donde el primer viaje comprende una localización de destino, un punto de venta y uno o más parámetros contextuales.
4. El método (400) de cualquiera de las reivindicaciones 1 a 3, en donde cada evento potencial se asocia con una pluralidad de contadores, cada contador se asocia con un ajuste temporal potencial, y registrar el número de ocurrencias de cada evento potencial con respecto a la una o más propuestas de viaje devueltas para las peticiones de búsqueda de texto libre comprende:
tras la satisfacción del evento potencial con respecto a una cualquiera de la una o más propuestas de viaje devueltas para las peticiones de búsqueda de texto libre, incrementar un valor del contador asociado tanto con el evento potencial como el ajuste temporal potencial que coincide con el ajuste temporal en el que se basó la devolución de la propuesta de viaje que satisface el evento potencial (510).
5. El método (400) de la reivindicación 4, en donde calcular el segundo valor de ponderación para la primera relación basándose en el número de ocurrencias comprende:
para cada evento potencial:
comparar los contadores asociados con el evento potencial (512), y
alterar la ponderación de evento que corresponde al evento potencial basándose en el ajuste temporal potencial asociado con el contador que se asocia con el evento potencial que tiene el valor más alto (514); y
calcular el segundo valor de ponderación para la primera relación basándose en la ponderación de evento alterado que corresponde a cada evento potencial (516).
6. El método (400) de cualquiera de las reivindicaciones 1 a 5, en donde generar los primeros datos para la base de datos de búsqueda de texto libre dinámica comprende:
determinar una asociación a partir de una o más fuentes en línea, en donde la asociación incluye una cadena de texto libre enlazada a un tercer viaje;
extraer una tercera palabra clave a partir de la cadena de texto libre; y
crear los primeros datos de tal forma que la primera palabra clave y el primer viaje de la primera relación corresponden respectivamente a la tercera palabra clave y el tercer viaje.
7. El método de cualquiera de las reivindicaciones 1 a 6, en donde la base de datos de búsqueda de texto libre dinámica comprende datos adicionales que representan una segunda relación, incluyendo la segunda relación un segundo viaje, un tercer valor de ponderación y la primera palabra clave de la primera relación representada por los primeros datos, y comprendiendo adicionalmente:
almacenar una única instancia de datos de la primera palabra clave en la base de datos de búsqueda de texto libre dinámica de tal forma que el primer viaje de la primera relación y el segundo viaje de la segunda relación se enlazan en la base de datos de búsqueda de texto libre dinámica a la única instancia de datos.
8. El método (400) de cualquiera de las reivindicaciones 1 a 6, en donde la base de datos de búsqueda de texto libre dinámica comprende datos adicionales que representan una segunda relación, incluyendo la segunda relación una segunda palabra clave, un tercer valor de ponderación y el primer viaje de la primera relación representada por los primeros datos, y comprendiendo adicionalmente:
almacenar una única instancia de datos del primer viaje en la base de datos de búsqueda de texto libre dinámica de tal forma que la primera palabra clave de la primera relación y la segunda palabra clave de la segunda relación se enlazan en la base de datos de búsqueda de texto libre dinámica a la única instancia de datos.
9. Un sistema para implementar una base de datos de búsqueda de texto libre dinámica (56), almacenando la base de datos de búsqueda de texto libre dinámica (56) primeros datos, generados por al menos un procesador, que representan una primera relación que incluye una primera palabra clave, un primer viaje y un primer valor de ponderación, comprendiendo el sistema:
al menos un procesador; y
una memoria acoplada al al menos un procesador, almacenando la memoria instrucciones que tras la ejecución por el al menos un procesador provocan que el sistema:
genere primeros datos para la base de datos de búsqueda de texto libre dinámica (56) que representa una primera relación (58) que incluye una primera palabra clave, un primer viaje y un primer valor de ponderación; reciba una pluralidad de peticiones de búsqueda de texto libre;
calcule un segundo valor de ponderación para la primera relación (58) basándose en las peticiones de búsqueda de texto libre, en donde el segundo valor de ponderación difiere del primer valor de ponderación; y
transformar los primeros datos en segundos datos insertando el segundo valor de ponderación en los primeros datos de tal forma que la primera relación (58) incluye el segundo valor de ponderación,
en donde la orden que provoca que el sistema calcule el segundo valor de ponderación para la primera relación basándose en las peticiones de búsqueda de texto libre comprende instrucciones que provocan que el sistema:
defina una pluralidad de eventos potenciales para la primera relación que puede producirse con respecto a una propuesta de viaje de vuelta en respuesta a las peticiones de búsqueda de texto libre basándose en la primera relación;
para cada petición de búsqueda de texto libre, consulte la base de datos de búsqueda de texto libre dinámica (56) para la primera relación que coincida con la petición de búsqueda de texto libre y devuelva una o más propuestas de viaje basándose en la primera relación;
registre un número de ocurrencias de cada evento potencial con respecto a la una o más propuestas de viaje devueltas para las peticiones de búsqueda de texto libre; y
calcule el segundo valor de ponderación para la primera relación basándose en el número de ocurrencias, y
en donde la orden que provoca que el sistema devuelva la una o más propuestas de viaje basándose en la primera relación comprende instrucciones que provocan que el sistema:
para cada petición de búsqueda de texto libre:
aplique un ajuste temporal a una pluralidad de ponderaciones de evento para definir ponderaciones de evento temporalmente ajustadas, en donde cada ponderación de evento corresponde a uno de los eventos potenciales; y
devuelva la una o más propuestas de viaje basándose en las ponderaciones de evento temporalmente ajustadas.
10. El sistema de la reivindicación 9, comprendiendo adicionalmente:
al menos un dispositivo de almacenamiento de datos que aloja la base de datos de búsqueda de texto libre dinámica (56), en donde las instrucciones tras la ejecución adicionalmente provocan que el sistema:
establezca una conexión para comunicación de datos entre el al menos un dispositivo de almacenamiento de datos y un sistema de propuestas de viaje (20) que incluye el al menos un procesador; y
transmita los primeros datos desde el sistema de propuestas de viaje (20) al al menos un dispositivo de almacenamiento de datos a través de la conexión.
11. El sistema de la reivindicación 9 o la reivindicación 10, en donde las instrucciones provocan que el sistema realice el método de cualquiera de las reivindicaciones 3 a 8.
12. Un programa informático que tiene instrucciones que tras la ejecución por al menos un procesador provocan que el al menos un procesador realice el método de una cualquiera de las reivindicaciones 1 a 8.
ES15290202T 2015-08-05 2015-08-05 Sistemas, métodos y productos de programa informático para implementar una base de datos de búsqueda de texto libre Active ES2774355T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP15290202.9A EP3128442B1 (en) 2015-08-05 2015-08-05 Systems, methods, and computer program products for implementing a free-text search database

Publications (1)

Publication Number Publication Date
ES2774355T3 true ES2774355T3 (es) 2020-07-20

Family

ID=53836518

Family Applications (1)

Application Number Title Priority Date Filing Date
ES15290202T Active ES2774355T3 (es) 2015-08-05 2015-08-05 Sistemas, métodos y productos de programa informático para implementar una base de datos de búsqueda de texto libre

Country Status (2)

Country Link
EP (1) EP3128442B1 (es)
ES (1) ES2774355T3 (es)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11039014B1 (en) 2019-06-13 2021-06-15 Express Scripts Strategic Development, Inc. Relationship determination system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0302640D0 (en) * 2003-02-06 2003-03-12 Rolls Royce Plc Database arrangement
US8001152B1 (en) * 2007-12-13 2011-08-16 Zach Solan Method and system for semantic affinity search

Also Published As

Publication number Publication date
EP3128442B1 (en) 2019-12-11
EP3128442A1 (en) 2017-02-08

Similar Documents

Publication Publication Date Title
US11361029B2 (en) Customized keyword query suggestions on online social networks
US9311417B2 (en) Personalized navigation shortcuts
US9792364B2 (en) Blending search results on online social networks
US10127304B1 (en) Analysis and visualization tool with combined processing of structured and unstructured service event data
US10282483B2 (en) Client-side caching of search keywords for online social networks
US10157201B2 (en) Method and system for searching for and providing information about natural language query having simple or complex sentence structure
US10289717B2 (en) Semantic search apparatus and method using mobile terminal
US20170308583A1 (en) Suggested Queries Based on Interaction History on Online Social Networks
US12045270B2 (en) Retrieving documents according to temporal similarity
CN111149100A (zh) 基于命名实体的解析和识别确定跨文档的修辞相互关系
JP2017504876A (ja) テキストのコンテキストベースの定義および翻訳を提供するためのシステムおよび方法
US20170091175A1 (en) Question answering system using multilingual information sources
CN106030579A (zh) 用于针对存储器内的多个存储区域扫描指定量的结果的方法、系统和计算机程序
CN112632379A (zh) 路线推荐方法、装置、电子设备和存储介质
JP7604767B2 (ja) 検索方法、装置、電子機器及び記憶媒体
US20140337242A1 (en) System and method for candidate matching
US9940354B2 (en) Providing answers to questions having both rankable and probabilistic components
CN113239173B (zh) 问答数据的处理方法、装置、存储介质与电子设备
US20180268063A1 (en) Vital Author Snippets on Online Social Networks
US10078858B2 (en) Systems, methods, and computer program products for implementing a free-text search database
ES2774355T3 (es) Sistemas, métodos y productos de programa informático para implementar una base de datos de búsqueda de texto libre
US20250053607A1 (en) Apparatus and methods for the generation and serving of web-based content
US20160335354A1 (en) Predicting real-time change in organic search ranking of a website
Myna et al. Analysis of the Essence of Social Networks as a Tool for Mediatization of the Historical and Cultural Heritage of Museums.
US11036725B2 (en) System and method for computerized data processing, analysis and display