2017-01-07 4 views
0

예 : "My name is John"문자열이 Firebase에 저장되어 있습니다.firebase 쿼리 및 신속

firebase에서 "John"을 가진 모든 게시물을 어떻게 찾을 수 있습니까? 지금 사용하여 문자열의 첫 번째 용어를 검색 할 수

:

DataService.dataService.BASE_REF.child("Posts").child(selectedComment.commentKey).queryOrderedByChild("userComment").queryStartingAtValue(comment).queryEndingAtValue(comment+"\u{F8FF}").observeSingleEventOfType(.Value, withBlock: { (snapshot) in 

곳 코멘트 = "내"경우 내가 중포 기지와 탄성 검색을 사용하는 방법에 대한 읽을 수는 있지만 확인하고 싶어서

가하던 firebase에 대한 ElasticSearch/Flashlight,

+0

모든 게시물을 다운로드하고 Swift에서 검색을 수행 할 수 있습니다. 가장 우아한 솔루션은 아닙니다. . 어쨌든, 여기 Firebase 문서에서 검색 예제를 볼 수 있습니다 : https://firebase.google.com/docs/reference/js/firebase.database.Query –

+0

답변을 수락하는 동안 문제는 또 다른 라이브러리에 대한 의존입니다. 하위 문자열 (와일드 카드) 검색을 수행합니다. 직접 할 수 있습니다 - 쉽지는 않지만 코드를 제어합니다. 내 대답은이 질문 [Wilcard query] (http://stackoverflow.com/questions/36365157/wildcard-query-on-firebase/36366619#36366619)을 참조하십시오. 귀하의 경우 전체 단어를 검색하는 경우 자동으로 문장을 구문 분석하고 각 단어를 저장하는 파서를 작성하십시오. 그런 다음 부분 문자열 검색은 매우 빠릅니다. 그것은 많은 코드가 아니며 디스크 공간도 저렴하므로 다른 옵션입니다. – Jay

+0

DIY 솔루션은 firebase의 작동 방식이 복잡합니다. 임의의 컬렉션에서 텍스트 일치를 검색하려면 전체 컬렉션을 클라이언트에 다운로드해야합니다. 적은 양의 데이터로는 클라이언트 측 검색이 가장 간단한 옵션이라고 생각합니다. 그러나 사소한 컬렉션 크기와 대역폭/cpu 제약 조건을 뛰어 넘는 것은 사소한 것이됩니다. 내 경험에 비추어 볼 때,이 시점은 생각보다 훨씬 일찍 도착합니다. 즉, 불합리한 대규모 수집을하지 않습니다. – Brandon

답변

1

불행히도 Firebase은 (모든 언어 SDK에서) 그런 콘텐츠를 검색하는 것을 지원하지 않습니다. 7월 '16에서 Google Groups Post에서 :

검색을 이해하는 회사로서, 우리는 또한 이 작업에 가장 적합한 도구를 사용하여 이해하는 회사입니다. 퍼지 매칭 및 에 NoSQL 실시간 데이터 저장소가 포함되어 있지 않은 경우 이러한 쿼리의 속도가 느리고 확장이 좋지 않습니다. BigQuery 또는 ElasticSearch는 확장 가능하고 강력한 방식으로 유용한 결과를 제공하는 올바른 도구 인 입니다.

바로 지금 작은 핸드셋 스크립트를 배포하여 샘플 Lightlight lib에 설명 된대로 검색 결과를 실시간 데이터와 동기화합니다. 앞으로 Firebase과 Cloud 제품, 특히 Cloud Functions 및 BigQuery 상호 운용성 간의 통합을 추가함에 따라 더 쉽게 이 될 것입니다.

BigQuery는 사용자 인식 검색을 위해 특별히 설계된 것이 아닙니다.

탄성 검색 (특히 Firebase 플러그인 Flashlight)이 잠재적 인 솔루션이지만, 암시 하듯이 엄청난 양의 오버 헤드 (ES 클러스터 배포/관리 또는 대여, 플러그인 구성 등)입니다. 콘텐츠 검색이 해당 시간/$를 정당화하기위한 앱의 중요한 부분이라면, 서비스의 가장 약한 영역 중 하나이기 때문에 데이터베이스 요구 사항에 대한 Firebase 이상의 솔루션을 고려할 수 있습니다. 제 생각에는

, 당신은 Flashlight 넘어 몇 가지 옵션이 있습니다

  1. Algolia, 검색 서비스로서의 업체, does offer integration with Firebase을,하지만 난 그것을 사용한 적이 & 때문에 제공 할 수 없습니다 그것이 존재한다고 말하는 것보다 훨씬 더. 요구 사항이 다른 백엔드 서비스로서 고려 &

  2. 는 또 다른 대안은 프로젝트의 단계에 따라 AWS Cloud Search

  3. 처럼, 다른 서비스를 검색 할 문서의 컬렉션을 유지 할 수있는 그 쿼리 측면에서 더 많은 것을 지원하십시오. 예를 들어, Scaphold.io, Graph.cool 및 Reindex와 같은 GraphQL-as-a-service 백엔드는 모두 SQL 데이터베이스를 기반으로하며 (여러 가지 유형의 쿼리를 지원합니다)