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

标签 c# java .net sql database


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

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

最佳答案

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

对于您想要的树的值(value),您需要一棵Patricia 树或一棵Radix 树。就将所有数据存储在 RAM 中而言,这是一个坏主意,因为还有其他应用程序使用 RAM,而不仅仅是您的索引。目前,我正在删除某人的自定义数据库,他们认为以这种方式实现是个好主意,并将其替换为真正的数据库解决方案。

关于c# - 随机存取存储器中的索引数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14269918/

相关文章:

java - PDFBox - "saveIncremental"插入第二张图像后不起作用

c# - struct 与 for 循环的使用

java - RapidMiner:通过 Id 属性访问 ExampleSet 的示例

c# - gzip HttpWebRequest

java - HTML 输入按钮位于 div 中

c# - Excel 互操作加载 XLL 和 DLL

c# - FormView 绑定(bind)中的 DropDownList

c# - 处理继承类中参数的最佳方法

c# - Entity Framework 代码先: should be used as a production technique or it's only for test purposes?

c# - 判断三角形是否正对