피어 투 피어 검색 엔진 시스템
이 프로젝트는 Kamilata 프로토콜의 라이브러리로 구현되었습니다. Kamilata는 오픈 네트워크에서 신뢰할 수없는 검색을 가능하게합니다. 이 라이브러리는 모든 유형의 데이터를 처리하고 LIBP2P 응용 프로그램에 쉽게 통합 될 수 있습니다.
몇 가지 사용 사례가 가능합니다.
순위 알고리즘은 귀하에게 달려 있습니다. 해당 결과에 포함 된 메타 데이터를 기반으로 원하는대로 순위를 매길 수 있습니다.
Kamilata는 세계 최초의 시스템으로 위에서 설명한 속성을 제공하는 반면 여전히 확장 가능합니다. 실제로, 네트워크에는 수억 이상의 문서와 수십만 개의 노드가 문제없이 포함될 수 있습니다. 실제 한도는 알려져 있지 않습니다.
이 라이브러리는 Admarus IPFS 검색 엔진에 전원을 공급합니다.
모든 것이 가장 순진한 접근 방식에서 시작하여 최대치까지 최적화했습니다. 각 문서를 저장하는 동료 네트워크를 상상해보십시오 (이 문서는 인기있는 경우 여러 동료에게 복제 될 수 있습니다). 동료가 문서를 검색하려면 네트워크의 모든 피어에게 쿼리를 보냅니다. 네트워크에 쿼리가 침수되기 때문에 피어가 너무 많을 때는 작동이 중지됩니다.
이를 해결하기 위해 검색자가 문서와 일치 하는 동료에게만 쿼리를 라우팅 할 수있는 라우팅 알고리즘을 추가했습니다. 이 덕분에 쿼리는 모든 쓸모없는 피어를 건너 뜁니다. 이제 쿼리에 관계없이 일치하는 문서 목록을 일정한 속도로 다운로드 할 수 있습니다. 검색 속도는 네트워크의 크기에 따라 다릅니다. 새로운 결과 h h = ln(n)/ln(c) 과 n 의 동료 수와 각각의 피어 c 다른 사람들과의 연결 수를받습니다. 이것은 c 가 100이면 3 이상의 h 과 매우 좋습니다. 네트워크에는 백만 명이 넘는 동료가 있어야합니다. 그런 다음 결과는 포함 된 메타 데이터를 기반으로 자유롭게 순위를 매길 수 있습니다.
Kamilata 라우팅 알고리즘은 감쇠 된 블룸 필터를 기반으로합니다. 블룸 필터는 요소가 세트에 있는지 여부를 결정하는 데 사용되는 소형 데이터 구조입니다. 여기서 우리는 문서에서 단어의 존재를 확인합니다. 노드의 관점에서 Kamilata 네트워크는 다양한 크기의 가상 노드 그룹으로 나뉩니다. 이것은 코퍼스를 몇 문서에서 코퍼스의 모든 문서에 이르는 여러 세트로 나눕니다. 각각 해당 블룸 필터가 있으면 네트워크에서 단어를 찾아서 주어진 단어에 대해 쿼리 할 노드를 쉽게 알 수 있습니다.