打分

Lucene打分规则与Similarity模块详解

北战南征 提交于 2019-12-09 19:50:27
搜索排序结果的控制 Lucnen 作为搜索引擎中,应用最为广泛和成功的开源框架,它对搜索结果的排序,有一套十分完整的机制来控制;但我们控制搜索结果排序的目的永远只有一个,那就是信息过滤,让用户快速,准确的找到其想要的结果,丰富用户体验。 以前看过一个牛人的博客,总结了 4 个地方,可对 Lucene 检索结果的排序进行控制,现在已经记不住。我自己简单整理了下面几个,若有疏漏,欢迎补充: 1. 通过 Lucene 自有的查询表达式: Lucene 提供相当丰富的表达式解析,要细讲就多了去了;这里只强调下,我在项目中用的比较多的是通过对指定域的加权,来影响检索结果(例如: field1:(XXX)^10 or field2:(XXX)^5 ;其中 XXX 是用户提交的检索) 2. 权重的控制:这是在建索引的时候就写入索引的,查询时只是读取出来,用乘的方式来对一些检索结果加分。据我自己看 Lucene 代码, Similarity 中也能在建索引时,对权重的写入进行控制;后面会细讲。 3. Controller 模块: Lucene 的排序流程控制模块,里面提供的一些接口能让你对打分后的搜索结果进行一些筛选和调整。 4. Similarity 模块: Lucene 的搜索结果打分控制模块,也是这里要详细分析的模块。他能让你对一个检索 结果的打分进行优化,或面目全非,哈哈。 Lucene