0
我想在不使用第三方的情况下实现搜索。我目前的想法是将不同的字符串长度存储为键,以便快速索引。我会实现至少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实时数据库不是全文搜索引擎。虽然可以模拟一些FTS技术,但它很少是一个完美的选择。如果您想搜索文本,最好使用专用搜索引擎,例如通过我们的手电筒集成。 –
一如既往地感谢弗兰克的回应。有没有可用的工具,不需要我运行一个单独的服务器?在我上面的建议中是否还有任何问题(除了有大量数据)?我不介意它处理非常特定类型的基本字符串搜索。 –
这样的推荐是堆栈溢出的话题,但我在Algolia看到了很好的结果。 –