Anuncios

Bienvenidos sean a este post, hoy veremos la parte mas importante de un engine de busqueda.

Anuncios

Este es el encargado del trabajo principal el engine de busqueda. Exacto, se encarga de recuperar los resultados desde el indice de busqueda y responder con una lista relevante de documentos que corresponda con el query de busqueda. En el post anterior vimos al analizador de query, y este se encarga de crear un objeto para el query que contiene varios datos, entre ellos los tokens generados y el id del generador de dialogo, usaremos a ambos para el procesador de query.

Anuncios

Los tokens en el objeto del query son los utilizados para solicitar al indice de busqueda, en orden, que devuelva el conjunto de documentos asociados con cada palabra. Veamos como puede ser la clase del procesador:

struct Documento {
  // para el objeto de tipo Documento
};

class QueryProcessor
{
public:
  using Documentos = std::vector<Documento>;
  static Documentos procesar_query(const Query& query) {
    if (!query.dialog_id.empty()) {
      // solicita a la grafica de conocimiento por nuevos terminos 
    }
    // recupera documentos desde el indice
    // ordena y devuelve los documentos
  }
};
Anuncios
Anuncios

Primero definimos un struct que usaremos para almacenar los datos del documento que recuperaremos. Ahi pondran todas las propiedades para los datos que desean almacenar, por un tema de brevedad lo omitiremos. Lo siguiente es la clase del procesador, en este tendremos primero un alias para almacenar los documentos, del tipo anteriormente creado, y luego un metodo para procesarlo. Este recibe al objeto que representa al query. Lo primero que haremos es verificar si existe un valor de ID para el procesador de dialogos. En caso de poseer un valor, se encarga de solicitar informacion a la grafica de conocimiento para obtener los terminos relacionados a los tokens obtenidos. Y si esta vacio, continua sin realizar esta solicitud. Despues recuperamos toda la informacion relacionada pero desde el indice de busqueda, las ordena y devuelve el objeto con todos los documentos obtenidos.

Anuncios

Otra particularidad de esta clase, es que tambien es responsable de las recomendaciones en el dialogo. Es decir, las distintas opciones que puede sugerir la grafica de conocimiento en base a lo solicitado. Como dijimos estos estaran asociados a un ID, ahora si se cambia la solicitud se cambiara las recomendaciones y se le asignara un nuevo ID. Obviamente, esto es una presentacion muy basica de como manejarlo y llevara un codigo demasiado largo para comentarlo pero es una base para entender como funciona.

Anuncios

En resumen, hoy hemos visto teoricamente al procesador de query, que es, para que sirve, como trabaja, y algunas particularidades para entender el concepto. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50