0

希望有人可以帮助我在这个 SOLR 问题上朝着正确的方向前进......

我有一个包含酒店功能和评级的数据集。功能的示例是“游泳池”、“健身房”、“免费 wifi”。每个功能的评分在 1 到 10 之间。我想使用 SOLR 来查询这些功能/评分对,并结合其他一些与酒店相关的标准,如“酒店名称”或“位置”,以便匹配最匹配和最高的酒店评级功能会显示在搜索结果的顶部。这是一个例子:

想象一下,最终用户正在搜索纽约市(位置:“纽约市”)的酒店,该酒店为“免费 wifi”和“游泳池”。理想情况下,搜索结果顶部的匹配项是纽约市的酒店'free wifi' 和 'pool' 的评分最高。希望这是有道理的吗?任何人都可以向我发送允许执行此类查询的 SOLR 功能的方向吗?

谢谢。

4

1 回答 1

0

我将使用 edismax 处理程序并分两部分执行此操作。

首先,酒店有游泳池吗?使用具有多个值的字段,以便您可以搜索设施:游泳池、设施:健身房等,或者使用一组布尔字段,池:真,健身房:真。

其次,有一个评分字段,并使用提升功能来提升每个评分。分数将乘以提升。我使用了 max() 来确保零或负评级不会导致问题。这是一个示例定义,它将进入 solrconfig.xml 中的请求处理程序配置:

<str name="boost">product(max(pool_rating,1),max(gym_rating,1))</str>

product() 接受多个参数,因此您可以继续添加它们。

于 2012-04-16T17:49:50.910 回答