elasticsearch,machine-learning,relevance,Java,Search,elasticsearch,Machine Learning,Relevance" /> elasticsearch,machine-learning,relevance,Java,Search,elasticsearch,Machine Learning,Relevance" />

Java Elasticsearch:从点击中学习(搜索结果排名)

Java Elasticsearch:从点击中学习(搜索结果排名),java,search,elasticsearch,machine-learning,relevance,Java,Search,elasticsearch,Machine Learning,Relevance,我读过书中的“从点击中学习”一章,喜欢这个想法:那里的搜索引擎学习用户点击的结果,并使用这些信息来提高结果的排名 我认为,如果我能从用户点击中学习,我的Java/Elasticsearch应用程序中的搜索排名质量将大大提高 在这本书中,他们建立了一个数据库,可以将学到的信息甚至用于新的搜索短语。他们使用Python和SQL数据库来计算搜索排名 有没有人已经用Elasticsearch实现了类似的东西,或者知道一个示例项目? 如果我可以直接在Elasticsearch中管理点击信息,而不需要额外的

我读过书中的“从点击中学习”一章,喜欢这个想法:那里的搜索引擎学习用户点击的结果,并使用这些信息来提高结果的排名

我认为,如果我能从用户点击中学习,我的Java/Elasticsearch应用程序中的搜索排名质量将大大提高

在这本书中,他们建立了一个数据库,可以将学到的信息甚至用于新的搜索短语。他们使用Python和SQL数据库来计算搜索排名


有没有人已经用Elasticsearch实现了类似的东西,或者知道一个示例项目?
如果我可以直接在Elasticsearch中管理点击信息,而不需要额外的SQL数据库,那就太好了。

您需要做的是将点击信息存储在Elasticsearch索引内的一个字段中。每次单击都会更新文档。由于更新操作实际上是一个删除和插入操作,因此您需要确保文档文本被存储,而不仅仅是索引。然后,您可以使用构建一个score函数来反映存储在索引中的值


或者,您可以将信息存储在单独的数据库中,并使用score函数中的脚本函数访问数据库。由于性能问题,我不建议使用此解决方案。

我明白您的问题所在。您希望在Elasticsearch框架内构建学习排名模型。在线计算每个文档与查询的相关性。您希望结合查询和文档来计算分数,因此需要一个自定义函数来计算_分数。我是elasticsearch的新手,我正在寻找解决问题的方法

Lucene是一个更通用的搜索引擎,它可以定义自己的计分者来计算相关性,我以前在它上面开发过几个应用程序


这描述了对定制记分器的理解。然而,在elasticsearch上,我还没有找到相关的文章。欢迎与我讨论您在elasticsearch方面的进展。

在信息检索领域(搜索和推荐的一般学术领域),这一领域通常被称为。无论是点击、转换还是其他形式的使用关键词搜索的“好”或“坏”结果,学习排名都使用分类器或回归过程来了解查询和文档的哪些特征与相关性相关

点击? 特别是对于点击,有理由怀疑优化点击是否理想。我正在努力挖掘的微软研究院的一篇论文声称,在他们的案例中,点击与相关性只有45%的相关性。点击+停留通常是一个更有用的通用相关性指标

正如我所说的,在搜索中也存在自我强化偏见的风险。如果你已经向用户显示了平庸的结果,而他们一直在点击这些平庸的结果,那么很有可能你最终会加强搜索,继续向用户显示平庸的结果

除了点击之外,对于您应该测量的内容,通常还有特定于领域的考虑因素。例如,在电子商务中,转换至关重要。也许导致这种购买的搜索结果点击应该更重要。Netflix有一个著名的尝试,当你看一部电影5分钟,然后回到菜单,而不是30分钟,然后退出时,它会告诉你这意味着什么。有些搜索用例是信息性的:当你搜索并点击多个搜索结果时,点击可能意味着与你购买单个项目时有所不同

很抱歉,这不是一颗银弹。我听说过很多成功的和不成功的尝试来学习排名,这主要归结为你在衡量你的用户认为相关的方面有多成功。这个问题的困难使许多人感到惊讶

对于弹性搜索。。。
特别是对于Elasticsearch,有(免责声明我是作者)。是的。一旦你知道了如何为一个特定的查询(无论是点击还是其他)对一个文档进行“评分”,你就可以训练一个模型,然后通过这个插件输入Elasticsearch进行排名

你的问题是什么?是否有人已经用Elasticsearch实现了类似的东西,或者知道一个示例项目?我已经实现了一个类似的项目OK;-),我明白了,我应该改进我问题的措辞。您能否分享项目的源代码、体系结构或Elasticsearch模式作为答案?您是否在不使用其他数据库的情况下实现了它?你如何储存点击?是否已经有任何公共Java/Elasticsearch解决方案实现了该算法(我认为,通过点击学习并不是一个罕见的功能)?感谢您的提示,但我认为函数分数查询功能还不够强大,因为您只能访问一个文档的字段。为我的用例提供一个分数查询的例子对我非常有帮助。哇,谢谢,非常有趣。三年后,我仍然没有学会在我的应用程序中对搜索进行排名;-)。这个插件看起来很有前途。有什么帮助吗?(赏金)谢谢道格,这会重新排名吗?或者它会为索引中的所有文档打分?对于一个使用xgboost模型对所有记录进行评分的巨大索引来说,似乎计算量相当大。然而,重新排名似乎更可行。你能谈谈吗。