我有一个拥有2亿多条记录的数据集,并希望构建一个专用的后端来插入一种类型提前的解决方案。鉴于Lucene的受欢迎程度和许可证类型,它很有趣,但是我也欢迎其他开源建议。我正在寻找建议,从from中获取故事,或者甚至更好地直接指导我所需的硬件和软件结构。要求:
一定有:
很高兴有:
笔记:
投票支持任何有用的信息,这些信息使我可以更接近于企业级的类型提前解决方案
最佳答案
如果每个记录都比较小(少于几个单词),则可以尝试使用Trie数据结构:
http://en.wikipedia.org/wiki/Trie
它是为减轻快速前缀匹配而构建的,并且相对节省空间。我已经将此数据结构用于您要查找的确切自动完成功能,并且我知道其他为大量生产网站执行此功能的人。根据我的经验,单个查询的响应时间预计为数十毫秒。
您可以很容易地自己实现Trie,也可以下载一些实现。看
Where do I find a standard Trie based map implementation in Java?
根据您使用的实现方式,用相关性分数标记每个索引记录应该相对简单,然后当您从查询中获取记录列表时,就可以使用该分数进行排序。
关于autocomplete - 如何使用Lucene或类似方法为超大型数据集的类型提前构造索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2768770/