全文搜索的一些理论总结

    很长一段时间我对全文搜索都有种错误的认识,认为学习全文搜索没有必要,全文搜索在小公司用不上,在大公司有专业人才。其实这种想法是非常错误的,现在的网站向社交关系发展,用户产生海量内容,如果没有全文搜索根本无法体现出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

猜你喜欢

转载自san-yun.iteye.com/blog/1556029