我们正在制定计划以识别用户感兴趣的内容标签。例如,我们可能会确定用户X比其他标签更频繁地使用标记为“kermit”和“piggy”的内容。这些是他们的“青睐的标签。”
当用户搜索时,我们希望偏向/偏见包含这些术语的文档。
这意味着我们无法在索引时提升文档,因为每个用户都会有不同的偏好标签。此外,他们可能不会自己搜索喜欢的标签。他们可能会搜索“奇闻趣事”,所以我们绝对想给他们提供带有“奇闻趣事”的文件,但我们想要提升也包含“kermit”或“piggy”的文件。
这些偏好的标签不用于实际查询索引,而是用于偏向结果排序。受欢迎的标签成为破坏者 - 在其他条件相同的情况下,包含这些条款的文件将排名更高。
这是新的/计划开发,因此我们可以使用任何版本和解析器堆栈来解决此问题。
SolrNet中的解决方案
下面正确回答了这个问题,但这里是SolrNet的代码,以防万一其他人正在使用它。
var localParams = new LocalParams();
localParams.Add("bq", "kermit^10000); //numeric value is the degree of boost
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<MySolrDocumentClass>>();
solr.Query(new SolrQuery("whatever") + localParams);
答案 0 :(得分:0)
您没有指定您正在使用的查询解析器,但如果您使用的是Dismax或Extended Dismax查询解析器,那么bq
参数应该完全正确你在寻找什么。 bq
仅为了影响相关性而向搜索添加搜索条件,但不限制结果集。
来自Dismax文档:
bq(提升查询)参数
bq参数指定了一个附加的可选查询子句 将添加到用户的主要查询中以影响分数。对于 例如,如果您想为最近的文档添加相关性提升:
q=cheese bq=date:[NOW/DAY-1YEAR TO NOW/DAY]
您可以指定多个bq参数。如果你想要你的查询 解析为具有单独提升的单独子句,使用多个bq 参数。
在这种情况下,您可能希望将&bq=kermit&bq=piggy
添加到Solr查询的末尾。如果您没有使用这些查询解析器之一,则此需求可能正是您需要切换的动机。