我已经开始研究Lucene(v 4.10.2)基于搜索的排名/评分。
请考虑以下情景:我正在搜索' Mark'在我的搜索框中。自动完成的结果显示前5名被评为“马克' (尽管Lucene索引文件中可能有数百个Mark。)
我继续使用Mark Zuckerberg的个人资料,该资料在搜索开始时位于第四位。说我多次点击他的个人资料。据我所知,下次我搜索马克·扎克伯格'马克·扎克伯格'应该位于列表的顶部。
我脑海中浮现出几个问题(即使我不知道我是否在正确的轨道上):
1)如何使用Lucene库实现这一目标? (基于自动或自定义的评分)
2)我们可以在任何搜索后更改评分吗?
3)Lucene库是否将评分存储在索引文件中?
4)我们可以将评分存储在索引文件中吗?
如果我在正确的轨道上,请告诉我。
答案 0 :(得分:0)
无论性能和索引如何,我都会尝试这样做 现在可维护性问题。
我会为至少有一次点击的用户添加一个多值字符串字段 档案文件。
每次用户(比如“vipul”)点击自动完成的个人资料(比如说) “Mark Zuckerberg”)我会将用户名添加到特殊的多值字符串中 配置文件中的字段。
搜索时,我会在特殊字段中使用当前用户名添加一个术语 作为价值,提升它,所以它在搜索中排在第一位。
现在,一些表现。由于更新完整文档只更新单个 现场可能相当昂贵,我会尝试一下 SortedSetDocValuesField。老实说,我还没有尝试过这个 相对较新的领域。但如果我理解得很好,它就是专为 像这样的情况。