我想根据Solr查询的相关性除以它们与点的地理距离来对结果进行排序。我试过提升1 /距离(使用edismax的boost参数)和各种变体。这样的问题在于,取决于查询,增强的相对权重变化(例如,长查询与非常短的查询)。因此,我希望能够让距离对所有查询产生相同的影响,因为我正在构建推荐引擎。我不能使用MLT,因为它也不允许你将距离纳入MLT请求,只有文档相似性,据我所知。我能想到的唯一方法是将整个查询嵌入到排序中的查询函数中,例如
sort=div(query(deftype=edismax&q=title:java&title:developer), sum(1, geodist(location, x,y)))
完整查询实际上要长得多,让它在排序中再次计算文档相关性似乎很荒谬。有一个更好的方法吗?有没有更好的方法来利用地理空间提升,以便提升始终与查询的其余部分成比例?
答案 0 :(得分:1)
用于此类提升的参数是boost
参数。它与bf
参数的工作方式非常相似,但应用乘法加法;也就是说,增强函数的结果乘以得分。
bf
和bq
参数会将提升功能的结果添加到乐谱中,就像它是另一个查询词一样,因此更复杂的查询通常会看到提升功能少了相对重量,正如你所描述的那样。