如何动态添加solr中的键值对?

时间:2018-03-01 05:57:15

标签: solr

我有一个场景,我必须在solr中添加对单击文档的查询对应的用户点击次数。我开始使用动态字段,但我不确定如何专门用于此目的。这就是我想要的

假设用户查询“Effel Tower”并点击链接,应将具有查询关键字的值添加到针对该文档的solr以及与该特定文档的该查询对应的点击次数。最终,我应该能够在根据点击次数执行相同查询时对solr结果进行排序。

我不确定这是否可行。请指导我提供最好的解决方案。

1 个答案:

答案 0 :(得分:0)

当然,这样可行 - 但需要一些代码才能使其正常工作。请注意验证查询字符串,以便用户可以覆盖文档中其他字段的自定义属性。使用query_string_或类似内容添加查询字符串前缀,并添加与dynamicField匹配的query_string_*定义。

如果您要按大量不同的字段名称进行排序,则需要设置docValues,因为内部lucene缓存会导致内存不足异常,否则如果您要排序很多不同的字段(即使这些字段的稀疏值仅出现在少量文档中,缓存将包含对所有文档ID的引用)。

但是,为点击流数据集设置单独的集合可能更容易维护和扩展,您可以在每次单击时插入文档,并引用要单击的文档ID,单击日期和查询。这样,如果您想查看最近x天的热门内容,您可以查询查询并应用点击日期范围等。

最后一点:点击数据通常不是 相关的。您希望使用用户是否返回搜索结果来扩充此数据,以及它是否是用户单击的最后一个链接。您还需要将点击频率与搜索结果中位置的预期点击频率进行比较 - 否则您将以与已订购相同的方式偏向搜索结果。人们点击第一次或第二次点击 - 你已经告诉他们的是最相关的 - 所以使用他们点击该链接作为如何排序文档的输入的事实将不会给你任何有用的数据。