全文搜索的一些理论总结2

 全文搜索的基础是从一串字符串中查询出一串字符。本文总结一下实现方法:

 

1.通过正则实现

>>> p = re.compile("abc|fuck")
>>> p.findall("abcfuckselpabcdslfabceflabc")
['abc', 'fuck', 'abc', 'abc', 'abc']

 

2. 通过Trie树实现

 

Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构。

Trie一词来自retrie ve,发音为/tri:/ “tree”,也有人读为/traɪ/ “try”。

Trie树可以利用字符串的公共前缀来节约存储空间。如下图所示,该trie树用10个节点保存了6个字符串tea,ten,to,in,inn,int:


全文搜索的一些理论总结2

在该trie树中,字符串in,inn和int的公共前缀是“in”,因此可以只存储一份“in”以节省空间。当然,如果系统中存在大量字符串且这些字符串基本没有公共前缀,则相应的trie树将非常消耗内存,这也是trie树的一个缺点。

Trie树的基本性质可以归纳为:

(1)根节点不包含字符,除根节点意外每个节点只包含一个字符。

(2)从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。

(3)每个节点的所有子节点包含的字符串不相同。

 

参考:

http://dongxicheng.org/structure/trietree/

http://kingj.iteye.com/blog/1463990

你可能感兴趣的:(总结)