jhc*_*hen 12 autocomplete ruby-on-rails mongodb
假设我有一组用户,并希望在这些用户的用户名上实现自动完成功能.我查看了mongodb文档,$ regex似乎是一种方法.有没有更好的办法?更好的意思是更高效/更好的练习.
kam*_*ber 11
正如@Thilo所建议的那样,你可以使用几个想法,包括前缀.
最重要的是要有非常快速的请求(因为你希望自动完成感觉不稳定).所以你必须使用将使用正确索引的查询.
使用regexp:use /^prefix/ (重要的是^指定行的开头,这对于使查询使用索引是必需的).
范围查询也很好: { $gt : 'jhc', $lt: 'jhd' } }
更复杂但更快:您可以在mongo(aka尝试)中存储前缀树,条目如下:
{usrPrefix : "anna", compl : ["annaconda", "annabelle", "annather"]}
{usrPrefix : "ann", compl : ["anne", "annaconda", "annabelle", "annather"]}
Run Code Online (Sandbox Code Playgroud)
最后一个解决方案非常快(当然,如果是compl上的索引),但根本不是空间效率.你知道你也有选择的权衡.
小智 7
我们使用正则表达式做它,只要你有一个索引并且使用/ ^ value /它就很快
请注意,您不能将不区分大小写的选项与索引一起使用,因此您可能希望将字符串的小写版本存储为文档中的另一个字段,并将其用于自动完成.
我已经完成了300万个文档的测试,但它仍然是即时的.
| 归档时间: |
|
| 查看次数: |
6496 次 |
| 最近记录: |