타사를 사용하지 않고 검색을 구현하고 싶습니다. 나의 현재 아이디어는 다른 문자열 길이를 키로 저장하여 색인이 빨리 작성되도록하는 것입니다. 최소 3 개의 문자열 길이를 구현하고 검색되는 문자열이 소문자인지 확인해야합니다. 중포 기지의 데이터에 의해 인스턴스가 다음과 같이 보일 것입니다 경우 : 그들은 동일한 검색 키를 공유합니다 검색 할 수있는 다른 일을있다, 그래서 만약더 쉽게 검색 할 수 있도록 문자열 인덱싱
{
users: {
matUserId: {
name: 'Mathew'
}
},
search: {
mat: {
users: { matUserId: true }
},
ath: {
users: { matUserId: true }
},
the: {
users: { matUserId: true }
},
hew: {
users: { matUserId: true }
},
math: {
users: { matUserId: true }
},
athe: {
users: { matUserId: true }
},
thew: {
users: { matUserId: true }
},
mathe: {
users: { matUserId: true }
},
athew: {
users: { matUserId: true }
},
mathew: {
users: { matUserId: true }
},
}
}
나는 그것을 확장했습니다. 이 기능이 작동하고 빠를 것이라고 확신합니다 (기본 구현을 통해 확인할 수 있음). 이것이 검색을 수행하는 올바른 방법인지 아니면 완전히 기반을 벗어 났는지 궁금합니다. 예를 들어 'hew'라는 단어를 검색하는 경우 자식 노드를 'hew'로 낮추면 사용자를 확보하고 표시 할 수 있습니다.
올바른 검색 방법은 사용 사례에 따라 다릅니다. 그러나 이전에 답변 된대로 : Firebase Realtime Database는 전체 텍스트 검색 엔진이 아닙니다. 그것에 몇몇 FTS 기술을 겨루는 것이 가능하더라도, 그것은 거의 완벽하지 않습니다. 텍스트를 검색하려면 손전등 통합과 같은 전용 검색 엔진을 사용하는 것이 가장 좋습니다. –
프랭크에게 항상 감사드립니다. 별도의 서버를 실행할 필요가없는 사용 가능한 도구가 있습니까? 또한 위의 제안에 많은 문제가 있습니다 (데이터가 많이있는 것을 넘어)? 매우 구체적인 유형의 기본 문자열 검색을 처리한다고 생각하지 않습니다. –
이러한 권장 사항은 스택 오버플로에서 벗어난 주제이지만 Algolia에서는 좋은 결과를 얻었습니다. –