向量空间模型(VSM)即(Vector Space Model),其实此模型更加适用于比较文档直接的相关性。但是本文还是基于在全文检索的基础上来说。
在全文检索中如何根据搜素关键字搜索之后的结果进行排序,即对搜素结果的文档进行排序。找出词(Term)对文档的重要性的过程称为计算词的权重(Term weight)的过程。计算词的权重(term weight)有两个参数,第一个是词(Term),第二个是文档(Document)。而关于这两个参数又有两个因素:
1,词频,即这个词在文档中出现的频率,tf,tf越大说明越重要。
2,多少文档中包含这个词,df,df越大说明越不重要。
VSM的过程为:
1,把索引的每一篇文档中的每一个词进行词权重(term weight)的计算,这个词权重的计算量是很大的,而且当有新文档加入时,则必须重新计算词的权值;
2,对查询的term序列计算词权重的计算:
2.1词频(tf)根据查询词的数量进行计算;
2.2文档词频(df)根据索引中记录的包含此个term的总的数量,(其实这也就可以理解lucene的索引中包含了那么的数字,需要那么复杂的索引了);
3,根据查询词的尾数建立查询词维数的空间向量(vsm),由于文档中包含的词的数目远大于查询词的维数,因此只能按查询词的维数建立空间向量(这个地方好像不太科学);
4,计算各个相关文档的词权重向量和查询词权重向量直接的余弦夹角,夹角越小的的(计算的结果值越大的)那么说明相关程度越高。
好像写的太简单了
参考:
1,http://www.cnblogs.com/forfuture1978/archive/2010/02/06/1664916.html
2,lucene原理与代码分析