1. TF-IDF算法

这是计算搜索词和文档相似度默认采用的算法;主要包括三个维度:

TF词频统计,IDF逆向文档频率统计以及字段长短;

词频统计

一般认为,一个term在文档中出现的频率越高,那么相似度越高,计算公式如下:

逆向文档频率统

一般认为,一个term在单个文档中出现的频率高,在其他文档中出现的频率低,我们认前者具有更好的区分度;

其中:

total:文档总数;

frequency:出现term的文档数量;

字段长短归一化

一般认为,一个字段越短,相似度越高的概率越大,计算公式:

其中:

length:字段中term的数量;

最后生成的score由以上三部分进行综合评分;

2. 向量空间模型

其核心思想是以空间的相似度表示语义上的相似度;空间上的相似度有很多度量方法,比如余弦夹角,欧几里德,曼哈顿和切比雪夫距离等等;通过term建立每个文档的向量空间(term在文档中出现的次数),通过距离公式计算相似度;

余弦夹角距离公式

3. 布尔模型

        这是最简单检索模式,通过AND,OR以及NOT运算,对term利用倒排索引进行检索;然后使用ES自带的实用评分函数计算相关度;

评分函数

查询因子归一化

协调因子:可以为那些查询词包含度高的文档提供奖励,文档里出现的查询词越多,它越有机会成为好的匹配结果;

        对于搜索来讲,倒排索引是很重要的,其前置工作需要对文本进行切词,下一篇文章会总结一下基于隐马尔科夫链HMM的分词算法;

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐