索引字符串以便于搜索

时间:2016-09-07 14:57:38

标签: firebase firebase-realtime-database

我想在不使用第三方的情况下实施搜索。我目前的想法是将不同的字符串长度存储为键,以便快速编制索引。我将实现至少3个字符串长度,并确保搜索的字符串是小写。例如,firebase中的数据看起来像这样:

public partial class AddIsDefault : DbMigration
    {
        public override void Up()
        {
            AddColumn("dbo.Contacts", "IsDefault", c => c.Boolean(nullable: false));
        }

        public override void Down()
        {
            DropColumn("dbo.Contacts", "IsDefault");
        }
    }

我已经将它扩展了,所以如果还有其他可以搜索的东西,它们将共享相同的搜索关键字。我相信这会起作用并且很快(我有一个基本的实现来检查它)但是想知道这是否是正确的搜索方式或者我是否完全偏离基础。作为一个例子,如果我要搜索“hew”这个词,它只会降低子节点的“hew”,然后我就可以得到用户并显示它们。

1 个答案:

答案 0 :(得分:0)

我不喜欢这个建议,因为它产生了相当大的数据集。弗兰克范普弗伦的Algolia建议会很有效,除了我现在有太多的免费版数据。我最终只能通过字符串的开头进行搜索并创建了一个单独的键来以小写形式存储文本。这样我的搜索变得非常简单:

.orderByChild('searchLowerCase').startAt(query.toLowerCase()).endAt(query.toLowerCase() + "\uf8ff")

这符合我的需要。