예 : "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,
모든 게시물을 다운로드하고 Swift에서 검색을 수행 할 수 있습니다. 가장 우아한 솔루션은 아닙니다. . 어쨌든, 여기 Firebase 문서에서 검색 예제를 볼 수 있습니다 : https://firebase.google.com/docs/reference/js/firebase.database.Query –
답변을 수락하는 동안 문제는 또 다른 라이브러리에 대한 의존입니다. 하위 문자열 (와일드 카드) 검색을 수행합니다. 직접 할 수 있습니다 - 쉽지는 않지만 코드를 제어합니다. 내 대답은이 질문 [Wilcard query] (http://stackoverflow.com/questions/36365157/wildcard-query-on-firebase/36366619#36366619)을 참조하십시오. 귀하의 경우 전체 단어를 검색하는 경우 자동으로 문장을 구문 분석하고 각 단어를 저장하는 파서를 작성하십시오. 그런 다음 부분 문자열 검색은 매우 빠릅니다. 그것은 많은 코드가 아니며 디스크 공간도 저렴하므로 다른 옵션입니다. – Jay
DIY 솔루션은 firebase의 작동 방식이 복잡합니다. 임의의 컬렉션에서 텍스트 일치를 검색하려면 전체 컬렉션을 클라이언트에 다운로드해야합니다. 적은 양의 데이터로는 클라이언트 측 검색이 가장 간단한 옵션이라고 생각합니다. 그러나 사소한 컬렉션 크기와 대역폭/cpu 제약 조건을 뛰어 넘는 것은 사소한 것이됩니다. 내 경험에 비추어 볼 때,이 시점은 생각보다 훨씬 일찍 도착합니다. 즉, 불합리한 대규모 수집을하지 않습니다. – Brandon