lucene排序算法除了分析查询关键词与文档的匹配度之外还包括其它的排序因子,先着重讨论通过向量空间模型分析查询关键词与文档的匹配度问题。
在向量空间模型中有两种基本的距离度量方式即:欧式距离和余弦距离,而求匹配度时采用的是余弦距离而不是欧式距离,个人理解如下:
1、文档由句子构成、句子由词和短语构成、短语由词构成,且要真正理解一篇文档需要考虑句子与句子的顺序、词和短语的顺序、词和词的顺序等等,向量空间模型简单的认为文档是由n个词构成的,并且词与词之间是正交的(每个词是个独立的维度并且是语义无关的,尽管不符合实际,但为了便于建立数学模型就做了这样的假设);
2、为了讨论方便就假设文档和查询短语由两个词构成,这样文档和查询短语就是二维平面上的向量;
3、词的量化采用TF-IDF算法计算而得(关于该算法的理论依据会单独写一篇进行讨论);
4、图中D表示文档向量,q1、q2表示查询向量,如果采用欧式距离q2比q1到D的距离更小从而相似度更高,实际上q1与D的相似度比q2的高,因为q2只包含一个词而q1包含两个词。