2.搜索引擎和中文分词
2.1 搜索引擎的工作原理
摘自:hp://blog.csdn.net/renenglish/arcle/details/5847100
搜索引擎为什么能快速检索到自己查询的关键字呢?实际上得益于它的数据存储机制
“倒排索引”,这里用一个例子来大体说明什么是倒排索引。
假设我有 10 篇文章,它们可能论述了相同或不同的主题。如果我想看看哪篇文章中含
有“中文分词”这个词语,我可以循环遍历每篇文章,看看他的内容中有没有含有“中文分词”
这个词语,然后把含有目标词语的文章返回。很显然,我需要打开 10 篇文章,并且从头到
尾的遍历每篇文章,看能否匹配到“中文分词”,这样的效率是很低的,对于毫秒级的搜索
引擎来说是绝对不能接受的。
所以我给每篇文章做个“目录”,事先找到含有“中文分词”的文章,假设文章 1,3,5,7 含有
这个词语,文章 2,4,6,7 含有“搜索引擎”,我建立一个对应关系表:
词语 文章编号
“中文分词”
1,3,5,7
“搜索引擎”
2,4,6,7
于是当我要检索“中文分词”这个词语的时候,我不再打开每篇文章去匹配,而是直接
在对应关系表看一下“中文分词”对应着文章 1,3,5,7。结果是文章 1,3,5,7 中含有“中文分词”,
同样检索“搜索引擎”,直接返回的结果是 2,4,6,7。如果我要同时检索“中文分词”和“搜索引
擎”,结果是(1,3,5,7)和(2,4,6,7)取交集。结果是文章 7 同时包含“中文分词”和“搜索引
擎”。这个对应关系表就是所谓的倒排索引。当然倒排索引可能包含的信息更为丰富,比如
不仅包含词语在哪一篇文章,同时还包含了在这篇文章的哪个位置等。生产环境中需要把
所有文章都建立一个倒排索引。
创建倒排索引的前提是:搜索引擎怎么认识句子中哪些是词语呢?它不知道“中文分
词”是一个词语。这个工作由中文分词器来完成,分词器在创建索引过程和用户查询过程都
会被使用到。
2.2 搜索引擎和数据库区别
为什么搜索引擎无法被数据库所替代的原因主要有两点:一个是在数据量比较大的时
候,搜索引擎的查询速度快,第二点在于,搜索引擎能做到比数据库更理解用户。第一点
好理解,每当数据库的单个表大了,就是一件头疼的事,还有在较大数据量级的情况下,
你让数据库去做模糊查询,那也是一件比较吃力的事(当然前缀匹配会好得多),设计上
就应当避免。关于第二点,搜索引擎如何理解用户,肯定不是简单的靠匹配,这里面可以
评论0
最新资源