我有数据库表,如 [ Id = 1,标题 ="此处有些文字......"] 。此数据库存在于两个不同的托管环境中。我需要在两个表中实现单个端点进行搜索。此端点将用于UI上的自动完成。我的想法在这里:
:从托管环境,加入,缓存中获取数据(可以在 Application_Start 中应用某种预热)
我需要将这些数据编入索引以加快搜索速度,而不是像这样:
foreach(string searchItem in searchtext.Split(' ')) { foreach(Item item in listOfAllitems) { foreach(string titleItem in item.Title.Split(' ')) { //check for startswith or contains here } } }
当然需要进行最终排序。我对搜索的看法:
使用空格分割所有标题并构建排序数组,如下所示:
{ambitious, [hashset of items where Title starts with 'ambitious']}, {bad, [hashset of items where Title starts with 'bad']} ...
从搜索文本中对每个单词进行二进制搜索 - >结果是每个单词的哈希集列表
查找哈希集之间的交集,对结果进行排序
我是否重新发明轮子?你知道为此目的的好算法吗?
UPDATE :两个数据库中的记录数量约为30.000。