이 라이브러리는 브라우저에서 모든 기능을 갖춘 검색 색인을 활성화하고 서버와 상호 작용하지 않고 이메일을 검색하기 위해 Runbox 7에서 사용됩니다.
이는 C로 작성된 오픈 소스 검색 엔진 라이브러리인 Xapian을 기반으로 합니다. Emscripten 컴파일러로 Xapian을 컴파일함으로써 최신 브라우저에서 실행되는 WebAssembly용 라이브러리를 구축할 수 있습니다.
WebAssembly를 대상으로 하면 nodejs가 있는 서버에서 동일한 코드를 사용할 수도 있습니다. 다양한 운영 체제에 대해 별도의 빌드를 만들 필요가 없습니다. 또한 Javascript 샌드박스 내에서 실행되므로 함께 제공되는 보안 기능의 이점을 누릴 수 있습니다. 우리는 이것이 성능 측면에서 큰 손실 없이 네이티브 빌드보다 더 안전하고 이식성이 높다고 믿습니다. 오히려 C 라이브러리에 대한 기존 스크립트 언어 바인딩을 사용하는 것과 비교하여 WebAssembly와 함께 제공되는 Javascript 런타임과의 긴밀한 통합을 통해 개발 생산성과 성능이 향상되는 것을 확인했습니다.
물론 브라우저에 검색 색인이 있는 것은 전체 웹의 검색 엔진에서는 작동하지 않지만 이메일 계정의 경우 검색 색인이 IndexedDB와 같은 브라우저 로컬 스토리지 엔진에 들어갈 수 있는 데이터의 양이 제한되어 있습니다. 사용 중 메모리.
서버가 아닌 브라우저에 검색 색인이 있으면 여러 가지 이점이 있습니다. 우선 쿼리와 결과를 서버로 왕복하지 않기 때문에 속도가 향상됩니다. 입력하는 즉시 전체 검색 결과를 반환할 수 있으며, 조회수 정렬 및 계산과 관련하여 더 많은 기능을 제공할 수 있습니다. 사용자 입장에서 이는 즉각적인 결과를 얻을 수 있으므로 쿼리를 조정하는 데 더 효율적일 수 있음을 의미합니다. 또 다른 이점은 서버가 귀하가 검색하는 내용을 모니터링하지 않는다는 점이며 이는 개인 정보 보호에 좋습니다. 인터넷에 연결되지 않은 오프라인에서도 콘텐츠를 검색할 수 있습니다. 사용자가 코딩 기술이 있는 경우 검색 색인 및 상호 작용할 라이브러리에 대한 전체 액세스 권한을 가지면 색인을 사용자 정의 처리할 수 있는 가능성이 열립니다. 스마트 검색부터 감시 및 경고에 이르기까지 모든 것이 가능한 이메일 시나리오입니다.
그래도 검색인덱스를 다운받기 싫고, 검색을 위해 서버를 이용하고 싶은 경우도 있습니다. 한 가지 시나리오는 자신의 것이 아닌 장치를 사용하는 경우일 수 있습니다. WebAssembly를 대상으로 하면 서버에서 동일한 코드를 재사용하여 브라우저에서와 동일한 API를 제공할 수 있습니다.
최신 웹 애플리케이션에서는 캐시, 설정, 콘텐츠 저장 등을 위해 브라우저 로컬 저장소를 점점 더 많이 사용하고 있습니다. 이는 더 나은 성능과 오프라인 기능을 제공하지만 우리가 사용하는 브라우저와 장치에 대한 더 많은 인식이 필요합니다. 자신의 개인 장치를 사용하지 않는 경우 해당 장치에 아무것도 저장되지 않도록 개인 검색을 사용해야 합니다. 또한 개인 장치의 경우 암호화된 파일 시스템을 제공하는 운영 체제 사용을 고려해야 합니다.
이 프로젝트는 https://github.com/xapian/xapian에 의존하며 여기에 작성된 대로 Emscripten을 사용하여 빌드했습니다.
https://github.com/xapian/xapian/blob/master/xapian-core/emscripten/README.md
웹 어셈블리 바이너리를 빌드하려면 XAPIAN
환경 변수를 Xapian emscripten 빌드의 xapian_core
폴더 위치로 설정해야 합니다.
그런 다음 XAPIAN=xapian_core_location npm run build
사용하여 빌드할 수 있습니다.
전체 빌드 및 테스트 절차(모든 푸시에서 실행됨)를 보려면 .travis.yml 파일을 살펴볼 수도 있습니다.
npm run test