2014-03-04 29 views
1

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

我不知道是明确的,所以我会添加一个具体的例子:

比方说,当“花园椅”用户搜索,SOLR返回我3个产品,“绿色园林椅” ,“蓝色椅子”和“花园hamac”。 “绿色花园椅”排名第一,hamac排名最后,如预期。 但是,所有搜索“garden chair”的用户最终都会点击hamac。

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

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

在此先感谢。

回答

1

如果您使用edismax(或者bf),您可以edismax bq。对于这个工作,你显然需要存储的信息(在DB,Redis的,不管你喜欢):

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

等等,当有搜索的时候查看,如果有信息可供搜索,发送bq提高你想要的。

此外,请检查QueryElevationComponent它可能是您的目的(尽管比只是提高....更强大)。有虽则考虑两件事情:

  1. 你改变,你会需要修改xml和重装点击数每一次,所以如果你能批它会更好,它在夜间或类似的东西。
  2. 有一个最近的JIRA问题,让您可以提供类似的功能,但通过提供请求参数,无需XML /重装的,所以检查出过
+0

您好,感谢您的回答。那么,我想bq/bf,但我的问题是能够提供一个取决于用户输入的提升因素。基本上,我不知道如何获得bq/bf字段中的参数化函数。是的,我正在计划进行夜间批量更新。 – Laloutre

+0

@ user3380561更新了更多细节,现在清楚了吗? – Persimmonium

+0

是的,我认为是。谢谢。我还将添加有关Redis与SolR的链接。还没有测试,但似乎看起来像我需要做的[链接](http://www.supermind.org/blog/1037/connecting-redis-to-solr-for-boosting-documents) – Laloutre