Un sistema de motor de búsqueda de pares
Este proyecto es una implementación como una biblioteca del Protocolo Kamilata. Kamilata permite una búsqueda sin confianza en las redes abiertas. Esta biblioteca puede manejar cualquier tipo de datos e integrarse fácilmente en su aplicación libp2p.
Varios casos de uso son posibles:
El algoritmo de clasificación depende de usted, ya que esta biblioteca solo le proporcionará un flujo de resultados de búsqueda desordenados. Según los metadatos que incluye en esos resultados, puede clasificarlos como desee.
Kamilata es el primer sistema del mundo en ofrecer las propiedades descritas anteriormente, sin dejar de ser escalables. De hecho, la red puede incluir sin problemas más de cientos de millones de documentos y cientos de miles de nodos. Se desconoce el límite real.
Esta biblioteca alimenta el motor de búsqueda de ADMARUS IPFS.
Todo comienza desde el enfoque más ingenuo, que he optimizado al máximo. Imagine una red de pares cada documentos de almacenamiento (estos documentos pueden replicarse en múltiples pares si son populares). Cuando un compañero quiere buscar un documento, envía una consulta a cada par en la red. Esto deja de funcionar cuando hay demasiados pares, porque la red está inundada de consultas.
Para resolver esto, agregué un algoritmo de enrutamiento que permite al buscador enrutar consultas solo a los pares que tienen documentos coincidentes. Gracias a esto, las consultas omiten a todos los compañeros inútiles. Ahora, puede descargar una lista de documentos coincidentes a una velocidad constante, independientemente de la consulta. La velocidad de búsqueda depende del tamaño de la red. Se reciben nuevos resultados cada h , donde h = ln(n)/ln(c) con n el número de pares y c el número de conexiones que cada compañero tiene a otros. Esto es muy bueno en cuanto a h Beeing más de 3 cuando c es 100, la red necesita tener más de un millón de compañeros. Los resultados se pueden clasificar libremente en función de los metadatos que incluyen.
El algoritmo de enrutamiento Kamilata se basa en filtros de floración atenuados. Los filtros de floración son estructuras de datos compactas utilizadas para determinar si un elemento está presente en un conjunto. Aquí, verificamos la presencia de palabras en documentos. Desde el punto de vista de un nodo, una red Kamilata se divide en grupos de nodos virtuales de diferentes tamaños. Esto divide el corpus en múltiples conjuntos que van desde algunos documentos hasta todos los documentos del corpus. Cada uno con su filtro de floración correspondiente, es fácil ubicar palabras en la red y saber qué nodos consultar para palabras dadas.