论文部分内容阅读
基于lucene搭建起来的企业搜索引擎,搜索出来的文档是根据查询词的相关度来进行排序。但如果将这个搜索引擎用到企业内部,这并不完全符合用户的需求,因为权限是企业的一个主要特点。用户在不同的系统中所属角色不一样,能看到的文档也不一样,对于不同的用户来说,搜索相同的查询词,可能想要的查询结果都不一样;长期搜索并点击过的文档,再次搜索时,点击过的文档能否排在前面;同一角色内的用户,搜索的查询词和点击过的文档对该角色下的其他用户是否有指导作用等;为了满足上述需求,在搜索的过程中,添加了影响搜索结果排序的评分因子。在得到搜索结果时,需要考虑查询词在文档中的位置,分析词在文档中的分布。在用户使用搜索系统的过程中并有了一定的搜索记录和点击记录时,定期的对用户的搜索行为进行离线分析。根据用户输入的查询词和点击情况,判断哪些搜索结果对该查询词和用户是相关的。评估搜索结果跟查询词的相关性是根据用户的点击情况,理想的情况下是用户点击过的文档都是与用户以及查询相关的。评分因子权重的计算采用的是ListNet算法,对样本集进行训练,得到每个评分因子的权重,对每个查询来说,只统计分析前100篇文档。当用户再次进行搜索时,在搜索的过程中,计算文档与查询词的相关度时,将评分因子和评分因子对应的权重进行加权平均求和,得到的分数作为文档与查询词的相关度,并通过堆排序对搜索出来的结果进行重新排序,将排序靠前的文档显示出来。根据用户的搜索和点击情况,发现这些评分因子对搜索结果是有用的,搜索出来的结果与查询词会更加相关,更加符合用户的需求;并采用分类过滤,缩小查询范围,使得搜索结果更加具体。通过分析发现,用户开始搜索时,词位置的权重较高,通过一段时间的使用,用户的点击行为以及所属的角色所占的权重相应提高。在搜索的过程中,对人名、地名的识别,以及新词的发现,使得搜索出来的结果更加准确。