腐宅
精华
|
战斗力 鹅
|
回帖 0
注册时间 2011-6-21
|
楼主 |
发表于 2011-7-20 17:26
|
显示全部楼层
引用第5楼yipansansha于2011-07-20 15:19发表的 回 3楼(两点水) 的帖子 :
B+树的好处是平衡和兼顾顺序,不过平衡这个思路ms是给文件系统随机搜索设计的
要排序radix sort就是你说的基数排序吧?把优先级作为文件名前缀,从后向前按文件名的每个字符做counting sort就是radix了。
之前说麻烦了,数据可以用链表存,索引做成分叉数固定的决策树(只是少了B+平衡的操作好像) 
谢谢,看来树型结构是必须了。另外我想问一下,因为要做增量搜索,如果用链表处理链表就要反复被查找(做字符串比较),这样的话是不是还是树合适?
引用第11楼venusvsvirus于2011-07-20 17:07发表的 :
我6楼7楼给了建议了,我能想到的最好的解决方案了。请问你是做哪个平台,mac可以调用系统的spotlight索引不用自己来,win7应该也可以吧,查查api也许能避免重造轮子 
没想到发帖的时候内容又增加了……
mac 下那个 spotlight 太慢被我关了
windows 下倒是有 usn journal,但是受磁盘类型限制(只能 ntfs)
谢谢你给出的逻辑,我觉得用树结构然后对查找结果再单独按权排序确实是不错的办法。
ps.我知道这挺贱的但是因为我本身就是用多系统所以写程序的时候想尽量少用系统特性(死
另外还有两个问题:
1,我现在比较头痛的就是文件有变动我的索引文件就要更新,我很希望能在保留原索引的基础上更新文件变动,请问这样可不可行?
2,程序内部如果全用 utf8 处理会不会比 wchar_t 好一点(综合效率和实现难度),我现在全用双字节但感觉有点浪费。 |
|