1

我希望 SolR 能够从我的网站用户的选择中“学习”。我的意思是我知道用户在执行搜索后点击了哪个产品。因此,我为 SolR 中索引的每个产品收集了 [term searched => number of clicks] 的列表。但我不知道如何根据用户输入进行提升。是否可以为文档索引一些键/值对并使用 boost 参数中可用的函数检索值?

我不确定是否清楚,所以我将添加一个具体示例:

假设当用户搜索“花园椅”时,SolR 向我返回了 3 个产品,“绿色花园椅”、“蓝色椅子”和“花园椅”。“绿色花园椅”排名第一,hamac排名最后,不出所料。但是,随后,所有搜索“花园椅”的用户最终都点击了 hamac。

我想帮助 hamac 在搜索“花园椅”中排名第一,而不改变它在其他搜索中的排名。所以我希望能够执行基于键=>值的提升。用 SolR 可以实现吗?

我确信我不能成为第一个需要这种基于用户的搜索结果改进的人。

提前致谢。

4

1 回答 1

1

如果您使用的是 edismax (或者可能是 bf),您可以使用edismax bq 。为此,您显然需要存储信息(在 db、redis 中,无论您喜欢什么):

  • 搜索“花园椅”:
    • 点击“花园的hamac”:10
    • 点击“绿色花园椅”:4
  • 搜索“绿桌”:
    • ...

依此类推,当有搜索时查找此内容,如果有可用于搜索的信息,请发送 bq 提升您想要的内容。

另外,请查看QueryElevationComponent这可能是您的目的(虽然比仅仅提升...。)。不过有两点需要考虑:

  1. 每次更改点击次数时,都需要修改 xml 并重新加载,因此最好将其批处理为 nightly 或类似的东西。
  2. 最近有一个 jira 问题允许您提供类似的功能,但通过提供请求参数,不需要 xml/reload,所以也检查一下
于 2014-03-05T08:39:40.363 回答