1


我目前正在为工作搜索系统编写一个小型测试 Web 应用程序。我有一张桌子空缺(主要要讲的桌子)。我需要对与用户查询匹配的空缺(在输入控件下方的建议列表中)进行快速 AJAX 更新。不同的 DBMS 提供了强大的编程扩展,例如Microsoft SQL Server 中的自由文本搜索……但我认为扫描物理文件需要大量时间。我的想法是基于将整个表Vacancy转移到 RAM 中,所以在我看来,这是有道理的,因为在这种情况下,数据检索需要更少的时间。因此,如果客户在文本框中键入“pro”之类的内容 - 建议列表会显示建议:

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

4

1 回答 1

2

这个问题在几年前就解决了,你正在重新创建Lucene

值得一提的是,您想要的树类型是帕特里夏树或基数树。就将所有数据存储在 RAM 中而言,这是一个坏主意,因为还有其他应用程序使用 RAM,而不仅仅是您的索引。目前,我正在删除某人的自定义数据库,他们认为以这种方式实施是一个好主意,并用真正的数据库解决方案替换它。

于 2013-01-11T02:21:05.327 回答