随机存取存储器中的索引数据库




我目前正在为一个求职系统编写一个小型测试web应用程序。我有一张表空缺(要谈论的主表(。我需要对与用户查询匹配的空缺(在输入控件下面的建议列表中(进行快速AJAX更新。不同的DBMS提供强大的编程扩展,如Microsoft SQL Server中的自由文本搜索。。但我认为扫描一个物理文件需要很多时间。我的想法是基于将整个表Vacations转移到RAM中,所以在我看来,这是有意义的,因为在这种情况下,数据检索需要更少的时间。因此,如果客户在文本框中键入类似"专业"的内容,则建议列表会显示建议:

-产品经理-专业设计师-程序员-程序员C#-程序员Java-物业管理员-供应专家
当用户键入另一个字母"g"时,文本框的值会扩大到"prog">并且该列表被刷新:
-程序员-程序员C#-程序员Java
为了实现这一点,我计划在节点中创建一个保存值的树索引,其中空位前缀将扮演索引键的角色,节点值是空缺名称。该索引只使用数据表中的数据构建并填充一次。请参阅我下面的意思:
"pro">->{"产品经理","专业设计师","程序员","程序员C#","程序员Java"财产管理员","供应专家"}
因此,索引生成器必须分析字符串列表,并找到空缺名称的前缀最少的。然后,当构建器找到一个前缀后面有字母的字符串时,它会创建一个子树节点("prog"((该节点中的数据值计数随着不断过滤而减少(,并将自己添加到父节点
"prog">->{"程序员","程序员C#","程序员Java"}}
你能就自然适合解决这个问题的树索引类型向我提供建议吗?到寻找时间为止,他们中最好的是什么?感谢

这个问题在几年前就已经解决了,您正在重新创建Lucene:

值得一提的是,你想要的树类型是Patricia树或Radix树。就将所有数据存储在RAM中而言,这是一个坏主意,因为还有其他应用程序使用RAM而不仅仅是索引。目前,我正在剥离一些人的自定义数据库,他们认为用这种方式实现是个好主意,并用真正的数据库解决方案取代它。

最新更新