是一个URL地址前缀库,里面的记录既有URL地址前缀(不是一个完整的地址,而是path的前面几个step),也有完整的URL地址,用户查询时不是准确查找某个记录,而是做最大匹配,例如,假设有下面的记录:
1,http://www.foo.com
2, http://www.foo.com/document
3, http://www.foo.com/document/doc1
4, http://www.foo.com/document/doc1/title
现在查找 http://www.foo.com/document/doc1/chapter1,我希望能够获得匹配最长的那个,就是第三个。
我大概看了一下bloomfilter和berkeley db的介绍,好像没有说做相似匹配,难道需要做底层编程?
有没有现成的开源免费的工具?有没有用trie实现的?
------解决方案--------------------------------------------------------
呵呵,楼主的需求很像linux里的路径搜索,可以考虑用目录项对象的概念,即: 以/来切割你的url,每部分做为一个目录向对象,保存时以第一个目录项对象,即:www.foo.com,做hash算法,后面再建立一个树形结构
搜索的时候,可以将要搜索的的url以/切割,一个一个对象的搜索匹配
这样可以满足高性能的查找
想简单的话,直接用perl就好了啊,散列里再包含散列,搜索的时候一级一级找就好了
------解决方案--------------------------------------------------------
如果打算用db的话,也是可以做的
还是以/分割,分割后的每一个部分都当作一个节点存在db里
www.foo.com 它的符节点是1 它的父节点是0
document 它的符节点是2 它的父节点是1
doc1 它的符节点是3 它的父节点是2
title 它的符节点是4 它的父节点是3
匹配的时候,将要匹配的url也以/切割,切割好之后,一个一个搜索就好了