很长一段时间我对全文搜索都有种错误的认识,认为学习全文搜索没有必要,全文搜索在小公司用不上,在大公司有专业人才。其实这种想法是非常错误的,现在的网站向社交关系发展,用户产生海量内容,如果没有全文搜索根本无法体现出UGD网站的价值。比如蘑菇街支持标签搜索,”瀑布排序“都只能通过搜索引擎实现。
全文搜索 的分类
1. 顺序扫描法
2. 逆向索引
全文搜索的处理步骤
1. 抓取数据
2. build index
3. 评分
4. 搜索
全文搜索的重要概念
term
postings
一个例子
通过逆向索引实现章鱼台的标签搜索
需求:
章鱼台需要支持对视频添加标签的功能。比如发布一首王菲的歌曲,可以添加王菲,MV这两个标签。通过搜索王菲,MV就可以找到这部视频。
实现方式:
table = {}
def build(msg,docId):
if table.has_key(msg):
table[msg].extend([docId])
else:
table[msg] = [docId]
build('wangfei',1)
build('mv',1)
build('suiyanzi',2)
build('mv',2)
build('zhoujielun',3)
build('mv',3)
print table
index: {'wangfei': [1], 'mv': [1, 2, 3], 'suiyanzi': [2], 'zhoujielun': [3]}
这里的实现方式比较简单,没有支持or and等搜索方式,也没有考虑分词。
参考:http://blog.csdn.net/forfuture1978/article/details/4711308