
全文检索流程分析图
索引库中是如何存储的?
数据库的一行数据会存储为一个document对象,一条记录的一列会存储为一个field,不会将数据库的所有数据都存储到索引库。
索引是如何创建过程
流程图
1. 分析文档,通过分词组件进行分词,获得词元(token)
2. 通过语言处理组件,
2.1 进行大写转小写,
2.2 复数变单数,
2.3 过去式,将来式转换为现在式,获得词(Term)
3. 获取Term
3.1获取Term词典
3.2 对Term词典进行排序
3.3合并相同的Term成文档倒排链表
3.4存入索引库
搜索流程
1. 根据搜索关键词创建语句进行查询
2. 根据查询结果结合自然权重和人为权重进行显示排序
自然权重
影响自然权重的两个因素tf和df
tf:即此Term在此文档中出现了多少次。tf 越大说明越重要
df:即有多少文档包含Term。df 越大说明越不重要。
人为设置权重
可以给 Document 和 Field 增加权重(Boost),使其在搜索结果排名更加靠前。缺省情况下,搜索结果以 Document.Score 作为排序依据,该数值越大排名越靠前。Boost 缺省值为 1。只要 Boost 足够大,那么就可以让某个命中结果永远排第一位。